正向代理:客戶端須要訪問Internet上的某個網站,訪問不了,從而訪問Nginx代理服務器,Nginx代理服務器訪問目標網站,並從中取出訪問數據返回給客戶端,目標網站獲取的訪問者的信息其實是Nginx代理服務器的,可是使用正向代理服務器,客戶端須要自行設置。html
反向代理:Nginx反向代理後端的一個或多個web服務,客戶端訪問web服務時,直接訪問的Nginx反向代理服務器,而Nginx再根據調度策略,將請求分發至後臺實際web服務器。node
環境:centos7.2nginx
Nginx:1.12.2web
node1_ip:192.168.169.103(Nginx代理服務器)vim
node2_ip:192.168.169.154後端
node2安裝web服務器:centos
yum -y install httpd瀏覽器
Apache默認首頁在/var/www/html下的index.html配置文件,若沒有,新建一個index.html並寫入測試語句:服務器
this is 192.168.169.154 web server,而後開啓http服務測試
service httpd start
瀏覽器訪問node2的http,看到首頁
配置Nginx代理服務器,node1:
yum -y install nginx #Nginx依賴軟件包zlib、pcre等
yum安裝的軟件配置文件,默認在/etc/下,
cd /etc/nginx
nginx.conf爲Nginx的默認配置文件
查看nginx.conf,配置文件中有:
include /etc/nginx/conf.d/*.conf; #表明會加載在此路徑下的全部的conf文件,即conf.d下的全部conf文件
cd conf.d/
touch test.conf #新建一個test 文件,嘗試代理node2的web服務器
vim test.conf
server {
listen 80; #監聽端口
server_name _; #
location / {
proxy_pass http://192.168.169.154:80; #代理的實際ip+端口
proxy_set_header X-Real-IP $remote_addr; #設置web服務器取得的客戶端的實際ip地址,# 不設置,查看web服務 的日誌,會發現,請求web服務的ip是Nginx代理服務器的ip。
}
}
#保存退出
service nginx start
瀏覽器訪問Nginx,出現node2,web服務器首頁,代理成功
備註:若是查看web服務器日誌,發現請求的客戶端ip仍然是Nginx代理服務器的ip,須要設置web服務器的主配置文件,例Apache的爲/etc/httpd/conf下的httpd.conf
其中配置日誌的字段爲,默認黃框內的配置爲,將其中的「%h」設置爲「%{X-Real-IP}i」
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
service httpd restart #重啓httpd服務,查看請求日誌,請求客戶端ip爲實際客戶端ip。