什麼是反向代理?
反向代理是指以代理伺服器來接受使用者的連接配接請求,然後将請求轉發給另外的伺服器,并将從該伺服器上得到的結果轉發傳回給使用者用戶端,伺服器之間的行為就稱之為反向代理。Nginx的ngx_http_proxy_module子產品就實作了這種方向代理的功能。

使用反向代理的作用?
- 反向伺服器入口實作統一通路入口為内網伺服器實作隐藏保證安全
- 反向伺服器入口實作統一緩存功能減輕伺服器負載
- 反向伺服器入口實作統一日志記錄
- 反向伺服器入口實作統一通路控制
-
實作負載均衡
...
如何配置反向代理
vim /usr/local/nginx/conf/nginx.conf
server {
listen 80;
server_name proxy.yekangming.com;
location / {
proxy_pass http://nginx.yekangming.com;
}
}
我們配置proxy.yekangming.com這個站點為使用者提供通路服務,資源是來自于nginx.yekangming.com,但這個對于用戶端是透明的,隻知道proxy.yekangming.com提供的服務,而不知道nginx.yekangming.com的存在,這對nginx.yekangming.com提供了安全。
小技巧
proxy_set_header Host $http_host;
proxy_set_header X-Forward-For $remote_addr;
一般在配置Nginx作為代理時,站點會添加以上的2條配置記錄來修改http請求的頭部資訊。
那麼為什麼要這樣做呢?
一般代理伺服器後端有多台應用伺服器,如果在應用伺服器利用了host字段進行路由、判斷、站點選擇等功能時,那麼如果沒有設定Host就會導緻請求失敗。而X_Forward_For字段表示請求的用戶端的身份,如果不進行配置則後端應用伺服器認為請求全部來自代理伺服器,如果有通路限制的政策的話,可能會引起誤識别,或者在日志收集的情況下,會發現日志資訊無法使用。