如何使用Nginx實現根據請求的URI將流量重定向

假設我們有一個需求,需要將以下URL重定向到不同的目標位址: http://192.168.1.3:8085/123456/test.html 重定向到 http://192.168.3.33:8085/test.html 設定重定向規則 首先,我們需要在Nginx設定檔中定義重定向規則。我們可以使用map指令來實現這一點。在http區塊中添加以下程式碼段: map $uri $test { ~^/123456/(.*) http://192.168.3.33; # 其他規則... } 在上述程式碼中,我們定義了一個名為$test的變數,它根據請求的URI進行匹配,並關聯相應的後端伺服器位址。在這個示例中,請求的URI以/123456/開頭的將匹配到http://192.168.3.33:8085這個後端伺服器位址。 設定反向代理 接下來,我們需要在server區塊中設定反向代理,並使用之前定義的重定向規則。在server區塊中添加以下程式碼段: server { listen 8085; location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_connect_timeout 240; proxy_send_timeout 240; proxy_read_timeout 240; proxy_pass $test:8085/$1?$args; # 修改此處 client_max_body_size 100m; } } 在上述程式碼中,我們設定了監聽埠為8085的伺服器,並在location /中進行反向代理的相關設定。我們設定了一些常用的代理標頭資訊,並禁用了Nginx對後端伺服器的重定向修改。另外,我們使用了$test變數作為後端伺服器位址,並使用$1將匹配到的URI子串附加到重定向的目標URL末尾。 測試重定向 完成以上設定後,儲存並重新載入Nginx設定檔。然後,使用瀏覽器或其他HTTP工具,訪問 http://192.168.1.3:8085/123456/test.html。根據我們的設定,該請求將被重定向到http://192.168.3.33:8085/test.html。 並確保其他的重定向規則和正則表達式模式正確配置,以便它們不會與此規則衝突並正確匹配其他請求。

June 2, 2023 · 1 分鐘