侧边栏壁纸
博主头像
张种恩的技术小栈博主等级

行动起来,活在当下

  • 累计撰写 747 篇文章
  • 累计创建 65 个标签
  • 累计收到 39 条评论

目 录CONTENT

文章目录

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

zze
zze
2020-03-11 / 0 评论 / 0 点赞 / 699 阅读 / 4252 字

不定期更新相关视频,抖音点击左上角加号后扫一扫右方侧边栏二维码关注我~正在更新《Shell其实很简单》系列

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

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

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】。

0

评论区