nginx反向代理配置
nginx作為web伺服器一個重要的功能就是反向代理。
當然你也可以使用nginx配置正向代理,本是介紹如何配置nginx的反向代理。
nginx反向代理的指令不需要新增額外的模組,預設自帶proxy_pass指令,只需要修改配置檔案就可以實現反向代理。
什麼是反向代理伺服器
反向代理功能是nginx的三大主要功能之一(靜態web伺服器、反向代理、負載均衡)。nginx一般同時做為靜態web伺服器和反向代理伺服器,做為web伺服器訪問靜態檔案圖片、css、js、html等檔案,做為反向代理伺服器把請求發給後端業務處理服務,如果有多個後端處理節點,會配置負載均衡功能。
反向代理伺服器是一種代理伺服器,用於管理從外部網路到內部網路的連線或任何特定請求。它保護、路由和管理從外部網路到內部網路、Web伺服器或專用網路的流量。
外網客戶機:我們平時開啟瀏覽器輸入網址訪問www.nginx.cn的場景中,我們的筆記本就可以理解為一個外網客戶機。
nginx反向代理服務:瀏覽器輸入網址並回車後,會發起一個http請求給nginx(反向代理伺服器),這個請求如果是訪問靜態檔案,那麼nginx作為web伺服器直接返回請求的內容,如果是訪問的後臺服務邏輯,那麼nginx把請求轉發給後端的服務處理。
內網web服務:後端的服務可以是很多種型別,LNMP環境下的php-fpm程序,Java環境下的tomcat、jetty等容器,通過程式邏輯處理http請求,生成html頁面或者json串返回給客戶端。對於小型應用,後端服務可以和nginx部署在同一臺機器上。
反向代理伺服器的好處
nginx反向代理重要的作用是配合upstream實現負載均衡。
同時增加安全性,客戶端不能直接訪問後端服務,多了一箇中間的屏障。
提升效能,通過非同步非阻塞的方式把請求傳給後端,提升了併發處理能力。
也可利用快取、壓縮響應提高響應速度。
nginx如何配置反向代理
nginx反向代理不需要編譯額外的模組,預設自帶proxy_pass和fastcgi_pass指令,通過在location配置塊中增加指令就可以實現反向代理功能。
以www.nginx.cn為例,這個網站用的wordpress程式,wordpress是php語言編寫,那麼需要通過php執行環境,可以選擇apache的php擴充套件或者php-fpm環境,主流的選擇是php-fpm,php-fpm設定為Unixsocket模式或者ip:埠模式。
Unix socket後端服務配置
server { listen 80; server_name www.nginx.cn nginx.cn; location /app { fastcgi_pass unix:/tmp/php-cgi.sock; } }
ip埠後端服務配置
server { listen 80; server_name www.nginx.cn nginx.cn; location /app { proxy_pass http://127.0.0.1:8080; } }
proxy_pass和fastcgi_pass區別
對於上面介紹的兩種情況下proxy_pass和fastcgi_pass可以互相替代使用,不過兩者還是有區別的,從名字我們就可以看出來,fastcgi_pass是用來反向代理fastcgi協議,proxy_pass可以代理包括fastcgi協議在內的其它協議。
例如映象一個網站,這種情況下就需要proxy_pass:
location /{ proxy_pass http://www.baidu.com; }
待續(●ˇ∀ˇ●)