Nginx 反向代理尾部斜杠

Nginx 反向代理尾部斜杠

这个问题已经回答过多次了,但就我而言有一个转折。

我有一个在端口 3000 上运行的节点应用程序。我正在使用 nginx 进行反向代理。现在,该应用程序只有在末尾有斜杠时才能工作。

因此这是可行的:https://example.com/main/site/react/

这不会:https://example.com/main/site/react

以下是我正在使用的配置:

location /main/site/react {
    error_log /var/log/nginx/app.error.log;
    rewrite ^/main/site/react/(?:|[\w\/]+)(\/static.*)$ $1 break;
    rewrite ^/main/site/react/?(.*)$ /$1 break;
    proxy_pass http://127.0.0.1:3000/;
}

在检查了其他相关问题后,添加以下重写规则(之后error_log)对我有用:

rewrite ^(.*[^/])$ $1/ permanent;

上述规则渲染了我的节点应用程序,但静态资源失败。我有一些静态资源重写不起作用。

因此此 URL 不起作用:https://example.com/main/site/react/static/js/bundle.js。它始终呈现索引 HTML 页面。

答案1

您的配置看起来不错。只需在末尾添加重写:

location /main/site/react {
    rewrite ^/main/site/react$ https://$host/main/site/react/ permanent;
    rewrite ^/main/site/react/(?:|[\w\/]+)(\/static.*)$ $1 break;
    rewrite ^/main/site/react/?(.*)$ /$1 break;
    proxy_pass http://127.0.0.1:3000;
}

还修改了正则表达式,它将处理查询参数前的斜线。

相关内容