1. 程式人生 > >基於nginx實現反向代理

基於nginx實現反向代理

準備工作:關閉虛擬機器防火牆,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,值是一個變數的值
        }

配置檔案如上
7.重啟nginx

# service nginx restart

8.測試
在本地物理機瀏覽器輸入nginx第一塊網絡卡的IP地址,頁面顯示結果如下圖
測試結果
注意:nginx所在虛擬機器的第一塊網絡卡ip地址需要和物理機的本地連線在一個網段(我的物理機本地ip地址為10.220.5.10,nginx所在虛擬機器的第一塊網絡卡ip為10.220.5.111)