本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名原文链接~~~

Nginx(12)之四、七层代理实例

微信搜索 zze_coding 或扫描 👉 二维码关注我的微信公众号获取更多资源推送:


开始之前推荐阅读完【细致的理解负载均衡】。

为后续测试,这里先准备如下几台主机:

image.png

主机名公网地址内网地址描述
A10.0.1.200172.16.1.200四层代理服务器
B-172.16.1.201七层代理服务器
C-172.16.1.202七层代理服务器
D-172.16.1.203Web 服务器
E-172.16.1.204Web 服务器

开始下述操作之前已经完成了上图中的地址配置,并且默认配置与【模板机】相同。

在所有主机中安装 Nginx 并删除默认的虚拟主机配置段:

$ yum install nginx -y
$ cp /etc/nginx/nginx.conf{,.bak} && sed -i '38,57d' /etc/nginx/nginx.conf

第二条命令谨慎执行哦,因为我这里默认的虚拟主机配置段就是 38~57 行,所以我直接删除,要是你的主机已经删除了或者位置和我不一样,就自己看着编辑删除哦。

配置 Web 服务器

1、在 D 主机中添加如下配置:

$ vim /etc/nginx/conf.d/web.conf
server {
    listen 80; 
    default_type text/html;

    location / { 
        return 200 'Host D';
    }   
}

2、在 E 主机中添加如下配置:

$ vim /etc/nginx/conf.d/web.conf
server {
    listen 80; 
    default_type text/html;

    location / { 
        return 200 'Host E';
    }   
}

3、启动 D、E 主机的 Nginx 服务:

$ systemctl start nginx

4、D 主机测试中访问 E 主机:

$ curl 172.16.1.204
Host E

5、E 主机中测试访问 D 主机:

$ curl 172.16.1.203
Host D

配置七层代理服务器

1、在 B、C 主机中添加如下配置:

$ vim /etc/nginx/conf.d/proxy7.conf
upstream web_pool {
    server 172.16.1.203:80;
    server 172.16.1.204:80;
}

server {
    listen 80; 

    location / { 
        proxy_pass http://web_pool; 
    }   
}

2、启动 B、C 主机的 Nginx 服务:

$ systemctl start nginx

3、测试 B 主机访问 C 主机:

$ curl 172.16.1.202
Host D
$ curl 172.16.1.202
Host E

4、测试 C 主机访问 B 主机:

$ curl 172.16.1.201
Host D
$ curl 172.16.1.201
Host E

配置四层代理服务器

1、创建一个保存四层代理虚拟主机配置文件的目录:

$ mkdir /etc/nginx/conf.c

2、在主配置文件的全局配置块使用 include 指令引用该目录:

$ vim /etc/nginx/nginx.conf
include /etc/nginx/conf.c/*.conf;

3、编辑四层代理配置文件如下:

$ vim /etc/nginx/conf.c/proxy4.conf
stream {
    upstream proxy7_pool{
        server 172.16.1.202:80;
        server 172.16.1.203:80;
    }

    server {
        listen 80;

        proxy_pass proxy7_pool;
    }
}

4、测试浏览器访问:
2020-03-11 20.39.58

开启四层代理访问日志

由于 Nginx 主配置文件中默认只配置了 http 节下的访问日志,所以使用 Nginx 四层代理时默认是不会记录访问日志的,不过我们可以手动在 stream 节下设定访问日志,如下:

log_format proxy '$remote_addr $remote_port ‐ [$time_local] $status $protocol ' '"$upstream_addr" "$upstream_bytes_sent" "$upstream_connect_time"' ;
access_log /var/log/nginx/proxy.log proxy;

Nginx 四层代理主要由 ngx_stream_core_module 提供支持,它的详细使用可参考 【Module ngx_stream_core_module】。

# Nginx  

如果这篇文章对您有帮助,可点击下方链接分享给你的朋友们😋,如果遇到问题欢迎评论、留言~~~😇

评论

公众号:zze_coding

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×