接上篇,反向代理的原理與用途不少地方有講,用文字說再多可能也表達不清楚,下面貼一張拓撲圖,介紹下什麼叫反向代理css
以上圖有兩種情景html
1. 訪問者的客戶端是 local ,要訪問baidu的服務器,baidu的前臺服務器自己不處理具體的業務,只是根據訪問的數據類型,或者業務類型等(就是一些特定的規則,好比URL正則),將不一樣類的請求轉發到不一樣的後端服務器,例如server1是靜態資源的,server2是處理帳戶系統的等nginx
2. 後端的每一個server提供的服務徹底相同,baidu的前臺服務器根據後端每一個服務器的負載量來均衡轉發客戶端來的請求,這種叫負載均衡(server1,server2, server3徹底相同)json
如何配置nginx的反向代理,我舉例經常使用的nginx+tomcat這種結構的服務器,tomcat默認跑在8080端口,我想將前臺的請求都經過80(HTTP)走,下面直接看配置文件:後端
# 定義後端的tomcat服務器組 upstream tomcatserver { # server 後端服務器的IP地址:端口 weight權重 server 127.0.0.1:8080 weight=5; server 127.0.0.1:8080 weight=10; } server { listen 80; server_name example.com; # 將全部請求轉發到tomcat location / { # 負載均衡轉發到後端的服務器組 proxy_pass http://tomcatserver; # 若是不須要負載均衡,只是將全部的請求轉發到某個具體的機器上 # proxy_pass http://127.0.0.1:8080; } # 靜態資源單獨處理,根據location的規則,靜態資源會優先處理,不會轉發到tomcat location ~* .*\.(js|css|ico|png|jpg|eot|svg|ttf|woff|mp3|gif|json|html|swf)$ { # 靜態資源 root /home/www; # 緩存30天 expires 30d; # add_header Cache-Control 'no-store'; } }
上面最核心的是upstream定義段,upstream是用來配置後端服務器均衡的(能夠參考http://www.cnblogs.com/jacktang/p/3669115.html)緩存
至此,一個簡單的反向代理代理就配置好了,固然nginx支持不少配置方式,多級負載均衡等,原理都與此相同tomcat
========= nginx反向代理配置 =========服務器
文中有不足指出,請直接指出,QQ:1485619676,歡迎一塊兒交流學習負載均衡