Nginx
nginx 配置反向代理在沒有斜線的重定向上失去基本路徑
我有以下 nginx 配置將 url 路徑重定向到它的透視服務
server { listen 80; server_name abc.com; location = favicon.ico { access_log off; log_not_found off } proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_cache_bypass $http_upgrade; location /a-ms/ { rewrite /a-ms/(.*) /$1 break; proxy_pass http:host.docker.internal:3000/; } location /b-ms/ { rewrite /b-ms/(.*) /$1 break; proxy_pass http:host.docker.internal:4000/; } }
使用 nodejs 託管 api 和 swagger doc 的後端微服務
當我從瀏覽器獲得一個 url 時,
abc.com/a-ms/doc/
它返回正常的招搖,但是當我去沒有斜杠的 url 例如abc.com/a-ms/doc
它重定向我到abc.com/doc
哪個不是我想要的(它缺少位置路徑)(。我該如何解決這個問題使用 nginx 配置設置?
遵循 RichardSmith 使用proxy_redirect的建議,現在我的位置重定向是正確的並包含位置路徑
location /a-ms/ { rewrite /a-ms/(.*) /$1 break; proxy_pass http:host.docker.internal:3000/; proxy_redirect /doc /a-ms/doc; #add this } location /b-ms/ { rewrite /b-ms/(.*) /$1 break; proxy_pass http:host.docker.internal:4000/; proxy_redirect /doc /b-ms/doc; #add this }