我有以下 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 文档的后端微服务
当我从浏览器访问一个 url 时,abc.com/a-ms/doc/
它会正常返回 swagger,但是当我访问没有斜杠的 url 时,abc.com/a-ms/doc
它会将我重定向到abc.com/doc
我不想要的页面(它缺少位置路径)(。如何使用 nginx 配置设置来解决这个问题?
答案1
按照 RichardSmith 的建议使用代理重定向现在我的位置重定向是正确的,并且包含了位置路径
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
}