目录
[步骤一 如何配置一组tcp反向代理](#步骤一 如何配置一组tcp反向代理)
[步骤一 如何配置一组http反向代理](#步骤一 如何配置一组http反向代理)
步骤二、如何同时配置两组tcp反向代理和两组http反向代理
步骤三、如何同时配置多组tcp反向代理和多组http反向代理
需求背景:
nginx配置多组tcp反向代理和http反向代理,同时满足下面两个要求:
要求1:配置两组tcp反向代理组:
tcp组1:后端服务器ip为172.25.0.69和172.25.0.70,upstream端口为1088,监听端口为10188,tcp组2:后端服务器ip为172.26.0.79和172.26.0.80,upstream端口为1099,监听端口为10199;
要求2:配置两组http反向代理组:
http组1:后端服务器ip为172.26.0.89和172.26.0.90,upstream端口为3088,监听端口为4088,http组2:后端服务器ip为172.27.0.29和172.27.0.30,upstream端口为5088,监听端口为6088
问题分析:
上面只是以两组为例,如果更多组呢,如何配置起来更加灵活呢
使用nginx同时配置多组tcp反向代理和多组http反向代理,直接配置并不明朗,一步步配置就越来越清晰,如果到最终解决方式,可以直接跳到最后看结果,问题拆解:
1、如何配置一组tcp反向代理,如何配置一组http反向代理,
2、如何配置两组tcp反向代理,如何配置两组http反向代理
3、如何配置多组tcp反向代理,如何配置多组http反向代理
分三步,六个问题的解决来实现
步骤一 如何配置一组tcp反向代理
stream {
upstream tcp_group1 {
server 172.25.0.69:1088;
server 172.25.0.70:1088;
}
server {
listen 10188;
proxy_pass tcp_group1;
}
}
http {
}
验证结果:
步骤一 如何配置一组http反向代理
http {
upstream http_group1 {
server 172.26.0.89:3088;
server 172.26.0.90:3088;
}
server {
listen 4088;
location / {
proxy_pass http://http_group1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
验证结果:
步骤一如何同时配置一组tcp反向代理和一组http反向代理
将步骤一的一组tcp配置组和一组http配置组放一块就可以同时实现配置一组tcp反向代理和一组http反向代理
for tcp
stream {
upstream tcp_group1 {
server 172.25.0.69:1088;
server 172.25.0.70:1088;
}
server {
listen 10188;
proxy_pass tcp_group1;
}
}
for http
http {
upstream http_group1 {
server 172.26.0.89:3088;
server 172.26.0.90:3088;
}
server {
listen 4088;
location / {
proxy_pass http://http_group1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
验证结果:
了解了单独一组tcp反向代理和一组http反向代理之后,我们就直接配置同时实现两组tcp反向代理和两组http反向代理的实现
步骤二、如何同时配置两组tcp反向代理和两组http反向代理
for tcp
stream {
upstream tcp_group1 {
server 172.25.0.69:1088;
server 172.25.0.70:1088;
}
server {
listen 10188;
proxy_pass tcp_group1;
}
upstream tcp_group2 {
server 172.26.0.79:1099;
server 172.26.0.80:1099;
}
server {
listen 10199;
proxy_pass tcp_group2;
}
}
for http
http {
upstream http_group1 {
server 172.26.0.89:3088;
server 172.26.0.90:3088;
}
server {
listen 4088;
location / {
proxy_pass http://http_group1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
upstream http_group2 {
server 172.27.0.29:5088;
server 172.27.0.30:5088;
}
server {
listen 6088;
location / {
proxy_pass http://http_group2;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
验证结果:
步骤三、如何同时配置多组tcp反向代理和多组http反向代理
实现同时多组的话,你也可以仿照图中的红框做为一个配置单元,一个个地往nginx.conf添加,但是这样对于每一个tcp反向代理或者http反向代理的增删改,可能比较棘手些,尤其是想通过web前端来实现nginx的反向代理的配置的时候,这样对单个反向代理的操作不够灵活,可扩展性差,如何比较灵活地实现反向代理的增删改查呢
这个时候每一个反向代理的配置放到一个文件里,然后用include命令来包含加载就方便需要,修改的时候只修改对应反向代理的配置文件,删除的时候直接删除该文件即可
worker_rlimit_nofile 65535;
events {
worker_connections 65535;
}
for tcp
stream {
include tcp.d/*.conf;
}
for http
http {
include http.d/*.conf;
}
将tcp_group1.conf位置和内容如图,放到了tcp.d里,这样include tcp.d/*.conf就可以加载tcp组1的反向代理,同理,tcp_group2.conf,http_group1.conf,http_group2.conf放在http.d目录下,之后操作对应的文件就可以实现对应反向代理的更细的配置,如果想取消对应的反向代理,删除目录下对应名字文件即可
总结:
问题的解决主要是注意nginx命令,如upstream和stream的适用配置块,还有include命令的使用,使nginx的配置更加模块化,更加灵活