假設我們有一個需求,需要將以下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。

並確保其他的重定向規則和正則表達式模式正確配置,以便它們不會與此規則衝突並正確匹配其他請求。