欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

基于nginx实现反向代理

程序员文章站 2022-03-20 09:06:06
...

准备工作:关闭虚拟机防火墙,selinux,关闭物理机防火墙,关闭物理机的代理。

第一步:配置上游服务器(这里我们用apache)

1.安装apache

# yum install httpd  -y

2.创建一个测试文件

# cd /var/www/html/
# echo "<h1>test for proxy</h1>" >./index.html

3.修改网络连接方式。(为了效果我们这里将上游服务器的和反向代理服务器分别设置在不同的网段)修改网络连接方式为任意一个虚拟网络即可(这里我用vmnet4)

4.修改IP地址

# cd /etc/sysconfig/network-scripts/
# vim ifcfg-eth0

修改里面的内容如下

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.5.2
NETMASK=255.255.255.0
GATEWAY=192.168.5.1

5.重启网络

# service network restart

6.启动apache

# service httpd restart 

第二步:配置代理服务器(基于nginx)

1.添加一块网卡,并设置网络连接的方式和上游服务器相同(这里我用的是vmnet4)

2.修改第二块网卡的ip地址

# cd /etc/sysconfig/network-scripts/
# cp ifcfg-eth0 ./ifcfg-eth1
# vim ifcfg-eth1

修改里面的内容如下

DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.5.1
NETMASK=255.255.255.0

3.重启网络

# service network restart

4.安装nginx

yum install nginx -y

5.测试是否可以访问上游服务器中的网页

# curl http://192.168.5.2/index.html

结果如下<h1>test for proxy</h1> 说明可以正常连接上游服务器。

6.修改nginx的配置文件

# cd /etc/nginx/conf.d/
# vim default.conf

在配置文件的server中添加一个location如下:

location / {
            proxy_pass http://192.168.100.191:80/;      
            	# 指定将用户请求代理到上游服务器
            proxy_set_header Host $host;                
            	# 添加一个新首部,首部名称叫做Host,目的是为了保存客户端所请求的域名
            proxy_set_header X-Real-IP $remote_addr;    
            	# 添加一个新首部,首部名称叫做X-Real-IP,值是一个变量的值
        }

基于nginx实现反向代理
7.重启nginx

# service nginx restart

8.测试
在本地物理机浏览器输入nginx第一块网卡的IP地址,页面显示结果如下图
基于nginx实现反向代理
注意:nginx所在虚拟机的第一块网卡ip地址需要和物理机的本地连接在一个网段(我的物理机本地ip地址为10.220.5.10,nginx所在虚拟机的第一块网卡ip为10.220.5.111)