Nginx反向代理配置

什么是反向代理?

1、有两台服务器A和B属于同一内网段,但是A不通外网,B通外网,客户端C只有外网
2、C想通过B访问A,就需要在服务器B上做反向代理
3、客户端C通过外网与服务器B通信,服务器B通过内网转发客户端C的请求与服务器A通信。

测试场景:

服务器A 内网IP地址:192.168.234.128 部署了上一篇文章中的bbs网站
服务器B 内网IP:192.168.234.130 外网IP:192.168.111.128
客户端C 外网IP:192.168.111.101

需求:

客户端C能访问到服务器A的bbs网站

1.测试客户端C与服务器B通过外网通信:
Nginx反向代理配置_第1张图片
#客户端C与服务器B的可以通过外网通信

2.新建并编辑服务器B的nginx虚拟主机配置文件:

[root@centos02 ~]# vi /etc/nginx/conf.d/nginx_proxy.conf

添加如下内容:

server
{
        listen 80;
        server_name test.bbs.com;

        location /
         {
            proxy_pass http://192.168.234.128;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         }
}

server_name:服务器A的bbs网站域名(虚拟主机$host)
proxy_pass http:服务器A的IP地址
proxy_set_header:代理来源IP和访问网站的客户端IP(如不配置,服务器A的nginx访问日志的来源IP将全是服务器B的IP地址)

3.从客户端C访问服务器A的bbs网站:

修改Windows系统C:\Windows\System32\drivers\etc\hosts文件:
Nginx反向代理配置_第2张图片
#由于服务器A的bbs网站域名test.bbs.com为自定义域名,所以需要在客户端C修改hosts文件,使浏览器访问test.bbs.com网站是指向到服务器B的外网地址

客户端C打开浏览器访问test.bbs.com:
Nginx反向代理配置_第3张图片
#已成功打开bbs网站页面,nginx反向代理配置完成

4.查看服务器A的nginx访问日志:

[root@linux nginx]# tail -1  access.log
192.168.234.130 - - [17/Oct/2019:16:43:29 +0800] "GET /favicon.ico HTTP/1.0" 200 5558 "http://test.bbs.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36" "192.168.111.1"

#来源IP192.168.234.130,真实IP:192.168.111.1

补充:

由于测试的客户端C和服务器B属于同一内网,所以真实IP显示的是192.168.111.0/24网段的网关,演示需要,将客户端C与服务器B的网段虚构成外网,所以两个不想通的内网段,也可以通过该方法配置nginx反向代理

你可能感兴趣的:(nginx反向代理,Nginx)