接上篇,反向代理的原理與用途很多地方有講,用文字說再多可能也表達不清楚,下面貼一張拓撲圖,介紹下什么叫反向代理
以上圖有兩種情景
1. 訪問者的客戶端是 local ,要訪問baidu的服務器,baidu的前台服務器本身不處理具體的業務,只是根據訪問的數據類型,或者業務類型等(就是一些特定的規則,比如URL正則),將不同類的請求轉發到不同的后端服務器,例如server1是靜態資源的,server2是處理賬戶系統的等
2. 后端的每個server提供的服務完全相同,baidu的前台服務器根據后端每個服務器的負載量來均衡轉發客戶端來的請求,這種叫負載均衡(server1,server2, server3完全相同)
如何配置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支持很多配置方式,多級負載均衡等,原理都與此相同
========= nginx反向代理配置 =========
文中有不足指出,請直接指出,QQ:1485619676,歡迎一起交流學習