當前位置:編程學習大全網 - 源碼下載 - 10. Nginx實現反向代理

10. Nginx實現反向代理

反向代理: reverse proxy, 指的是代理外網用戶的請求到內部的指定的服務器, 並將數據返回給用戶的壹種方式, 這是用的比較多的壹種方式

Nginx除了可以為企業提供高性能的web服務之外, 另外還可以將Nginx本身不具備的請求通過某種預定義的協議轉發至其他服務器處理, 不同的協議就是Nginx服務器與其他服務器進行通信的壹種規範, 主要在不同的場景使用以下模塊實現不同的功能

生成環境部署架構:

訪問邏輯圖:

Nginx反向代理http服務:

1. proxy_pass

2. proxy_hide_header field

修改前, 響應報文頭部會攜帶ETag信息

修改後ETag信息被隱藏

3. proxy_pass_header field

4. proxy_pass_request_body

5. proxy_pass_request_headers

6. proxy_set_header

由於proxy_set_header只是修改了請求報文的頭部信息, 添加了自定義的字段, 因此, 還需要在後端服務器修改日誌定義格式, 才能方便將客戶端ip記錄到日誌信息中

註意1:通過set_proxy_header自定義變量只是給請求報文添加了壹個自定義的字段, 其字段值是人為根據系統內置變量設定的

註意2: 這種方法, 在多級代理的情況下, 並不能將客戶端ip, 逐層的傳給後端服務器, 而是需要利用$proxy_add_x_forwarded_for變量實現

註意3: 如果壹定要使用proxy_set_header去傳遞客戶端ip和每壹層代理的ip地址, 那麽需要在每壹層nginx代理都開啟proxy_set_header, 並且設置不同的自定義變量去引用nginx自帶變量$remote_addr, 這樣每壹級nginx都會記錄上壹級, 也就包括客戶端的ip地址, 同時, 在後端服務器的日誌格式中, 要添加多個nginx自定義的變量, 這樣也可以把客戶端ip和中間經過的代理的ip全部傳遞給後端的服務器

proxy_add_x_forwarded_for實現多級代理ip地址透傳示例: 需要在每壹級代理都開啟

實驗環境:

7. 有關反向代理時間的幾個參數

8. proxy_ignore_client_abort

9. hash表大小的設置

客戶端 ----- http協議 ------- nginx(代理服務器,10.0.0.86) ----- http --- apache (10.0.0.85)

客戶端, 通過訪問nginx上定義的虛擬主機中的server_name域名, 通過內部定義的location匹配規則, 被轉發到10.0.0.85服務器

代理服務器與後端服務器連接出現問題可能發生的報錯:

如果後端服務器想把圖片資源放到固定的目錄下, 也可以自定義, 比如存到/var/www/html/static, 那麽nginx的location就要修改為如下:

緩存功能相關參數:

實驗環境:

proxy_pass 可以讓Nginx將客戶端請求轉發至後端單臺服務器, 但是無法轉發至特定的壹組服務器, 而且不能對後端服務器提供相應的服務器狀態監測.

Nginx可以基於 ngx_http_upstream_module 模塊提供服務器分組轉發, 權重分配, 狀態監測, 使用不同的調度算法等高級功能

關於ip_forward

註意: 本實驗過程要先關閉緩存

訪問固定的URI會被調度到相同的服務器

  • 上一篇:手機系統哪個更智能,兼容性更強?塞班、安卓、WM、iphone的
  • 下一篇:近戰流的技能如何搭配策略輸出技巧
  • copyright 2024編程學習大全網