天天看點

Nginx之7移花接木 - (反向代理)

什麼是反向代理?

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

Nginx之7移花接木 - (反向代理)

使用反向代理的作用?

  1. 反向伺服器入口實作統一通路入口為内網伺服器實作隐藏保證安全
  2. 反向伺服器入口實作統一緩存功能減輕伺服器負載
  3. 反向伺服器入口實作統一日志記錄
  4. 反向伺服器入口實作統一通路控制
  5. 實作負載均衡

    ...

如何配置反向代理

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字段表示請求的用戶端的身份,如果不進行配置則後端應用伺服器認為請求全部來自代理伺服器,如果有通路限制的政策的話,可能會引起誤識别,或者在日志收集的情況下,會發現日志資訊無法使用。

繼續閱讀