假設我們有一個需求,需要將以下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。
並確保其他的重定向規則和正則表達式模式正確配置,以便它們不會與此規則衝突並正確匹配其他請求。