Nginx 服務器的反向代理服務是其最常用的重要功能,由反向代理服務也可以衍生出很多與此相關的 Nginx 服務器重要功能,比如后面會介紹的負載均衡。
反向代理,其實客戶端對代理是無感知的,因為客戶端不需要任何配置就可以訪問,我們只需要將請求發送到反向代理服務器,由反向代理服務器去選擇目標服務器獲取數據后,在返回給客戶端,此時反向代理服務器和目標服務器對外就是一個服務器,暴露的是代理服務器地址,隱藏了真實服務器IP地址。 (推薦學習:nginx教程)
nginx反向代理配置:
location ~ /someuri { access_log /var/log/nginx/uploads.log; proxy_pass_header Server; proxy_set_header Host $http_host; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Scheme $scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_read_timeout 300; proxy_pass $scheme://proxy_location$uri; recursive_error_pages on; }
如上面代碼所示,可以進行反向代理,但這樣會有問題:如果在url里面加了請求參數,用$scheme://proxy_location$uri轉發后是不帶這請求參數的,所以不能使用$uri這個變量,如需要繼續攜帶請求參數,則需要使用$request_uri,即proxy_pass $scheme://proxy_location$request_uri;