Nginx反向代理
1 問題
使用Nginx實現Web反向代理功能,實現如下功能:
後端Web服務器兩臺,可以使用httpd實現
Nginx採用輪詢的方式調用後端Web服務器
兩臺Web服務器的權重要求設置爲不同的值
最大失敗次數爲1,失敗超時時間爲30秒
2 方案
使用4臺RHEL7虛擬機,其中一臺作爲Nginx代理服務器,該服務器需要配置兩塊網卡,IP地址分別爲192.168.4.5和192.168.2.5,兩臺Web服務器IP地址分別爲192.168.2.100和192.168.2.200。客戶端測試主機IP地址爲192.168.4.100。
3 步驟
實現此案例需要按照如下步驟進行。
步驟一:部署實施後端Web服務器
1)部署後端Web1服務器
後端Web服務器可以簡單使用yum方式安裝httpd實現Web服務,爲了可以看出後端服務器的不同,可以將兩臺後端服務器的首頁文檔內容設置爲不同的內容。
[root@web1 ~]# yum -y install httpd
[root@web1 ~]# echo "192.168.2.100" > /var/www/html/index.html
[root@web1 ~]# systemctl restart httpd
2)部署後端Web2服務器
[root@web2 ~]# yum -y install httpd
[root@web2 ~]# echo "192.168.2.200" > /var/www/html/index.html
[root@web2 ~]# systemctl restart httpd
步驟二:配置Nginx服務器,添加服務器池,實現反向代理功能
1)修改/usr/local/nginx/conf/nginx.conf配置文件
[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
http {
.. ..
upstream webserver {
server 192.168.2.100 weight=1 max_fails=2 fail_timeout=10;
server 192.168.2.200 weight=2 max_fails=2 fail_timeout=10;
}
.. ..
server {
listen 80;
server_name www.aa.com;
location / {
proxy_pass http://webserver;
}
}
2)重啓nginx服務
[root@svr5 ~]# /usr/local/nginx/sbin/nginx –s reload
3)使用瀏覽器訪問代理服務器測試輪詢效果
[root@client ~]# curl http://192.168.4.5 //使用該命令多次訪問查看效果
步驟二:配置upstream服務器集羣池屬性
1)設置失敗次數,超時時間,權重
[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
http {
.. ..
upstream webserver {
server 192.168.2.100 weight=1 max_fails=2 fail_timeout=10;
server 192.168.2.200 weight=2 max_fails=2 fail_timeout=10;
}
.. ..
server {
listen 80;
server_name www.aa.com;
location / {
proxy_pass http://webserver;
}
}
2)重啓nginx服務
[root@nginx ~]# /usr/local/nginx/sbin/nginx –s reload
3)使用瀏覽器訪問代理服務器測試輪詢效果
[root@client ~]# curl http://192.168.4.5 //使用該命令多次訪問查看效果
4)設置相同客戶端訪問相同Web服務器
[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
http {
.. ..
upstream webserver {
ip_hash;
server 192.168.2.100 weight=1 max_fails=2 fail_timeout=10;
server 192.168.2.200 weight=2 max_fails=2 fail_timeout=10;
}
.. ..
server {
listen 80;
server_name www.aa.com;
location / {
proxy_pass http://webserver;
}
}
5)重啓nginx服務
[root@svr5 ~]# /usr/local/nginx/sbin/nginx –s reload
6)使用瀏覽器訪問代理服務器測試輪詢效果
[root@client ~]# curl http://192.168.4.5 //使用該命令多次訪問查看效果