开始之前推荐阅读完【细致的理解负载均衡】。
为后续测试,这里先准备如下几台主机:
主机名 | 公网地址 | 内网地址 | 描述 |
---|---|---|---|
A | 10.0.1.200 | 172.16.1.200 | 四层代理服务器 |
B | - | 172.16.1.201 | 七层代理服务器 |
C | - | 172.16.1.202 | 七层代理服务器 |
D | - | 172.16.1.203 | Web 服务器 |
E | - | 172.16.1.204 | Web 服务器 |
开始下述操作之前已经完成了上图中的地址配置,并且默认配置与【模板机】相同。
在所有主机中安装 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、测试浏览器访问:
开启四层代理访问日志
由于 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】。
评论区