當前位置:首頁 » 雲伺服器 » nginxip轉發不同伺服器

nginxip轉發不同伺服器

發布時間: 2023-09-17 12:37:33

A. 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_mole 模塊提供伺服器分組轉發, 權重分配, 狀態監測, 使用不同的調度演算法等高級功能

關於ip_forward

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

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

B. nginx反向代理三種模式

1、基於IP代理

2、基於域名代理

3、基於埠代理

Nginx是一款輕量級的Web 伺服器/反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器,其特點是佔用內存少,並發能力強,是我們在Web開發中最常用的工具之一。

此外,Nginx能提供性能穩定、並且提供配置靈活的轉發功能。它可以根據不同的正則匹配,採取不同的轉發策略,並且Nginx對返回結果進行錯誤頁跳轉,異常判斷等。如果被分發的伺服器存在異常,它可以將請求重新轉發給另外一台伺服器,然後自動去除異常伺服器。

C. Nginx轉發請求過程解析

How nginx processes a request

這種配置情況下,第一個server就是默認配置。請求通過Header中的"Host"來匹配到對應的服務,如果沒有匹配到任何server_name,則路由到默認server(第一個server)處理。

通過給 listen 增加 default_server 參數明確指定哪個server是默認server( default_server 參數從0.8.21版本開始有效)。 注意: default_server 是用作用於埠的,而不是 server_name 的

可以定義一個 server_name 屬性為空的server來處理沒有Host的請求(從0.8.48版本開始, server_name 默認是"",之前的版本默認是hostname)。

這個配置標識請求Header中Host為空時,會返回「444」響應碼,然後關閉鏈接。

請求Header中的Host匹配到 server_name 後,會轉發到IP+埠上,如果為匹配到 server_name ,如前面所述,會轉發到第一個server來處理請求,當然也可以通過 default_server 屬性來指定埠的默認server。

如上配置,處理請求流程如下:

請求進來時,nginx會按照如下步驟來匹配請求(匹配請求只用URI不帶參數的部分)

spring web service系列1
spring web service系列2
spring web service系列3
maven配置文件settings.xml詳解
Nginx中的負載均衡演算法
Nginx upstream指令配置說明
Nginx中虛擬伺服器server指令配置說明
Nginx中proxy_pass/proxy_redirect/proxy_set_header配置說明
Nginx中ngx_http_core_mole相關指令配置說明
Java自帶JVM監控工具jstat使用詳細說明
Java自帶JVM監控工具jps使用詳細說明
Java自帶故障分析工具jmap工具使用說明
Java自帶故障分析工具jhat工具使用說明

熱點內容
分線器安卓供電口有什麼用 發布:2025-03-13 04:19:54 瀏覽:135
埠訪問關系 發布:2025-03-13 03:49:50 瀏覽:788
運用零基預演算法 發布:2025-03-13 03:45:30 瀏覽:790
安卓伺服器搭建web 發布:2025-03-13 03:40:26 瀏覽:317
銅板演算法 發布:2025-03-13 03:40:25 瀏覽:621
ins怎麼保存圖片安卓 發布:2025-03-13 03:38:14 瀏覽:214
什麼資料庫快 發布:2025-03-13 03:34:38 瀏覽:52
喋血復仇加入伺服器失敗怎麼回事 發布:2025-03-13 03:33:37 瀏覽:698
萌感系列全集用什麼解壓 發布:2025-03-13 03:30:31 瀏覽:265
為什麼別人看我抖音顯示伺服器維護中 發布:2025-03-13 03:24:45 瀏覽:687