这个问题已经被多次回答了,但是在我的情况中却有一个转折点。
我有一个在端口3000上运行的节点应用程序。我正在使用nginx来反向代理。 现在应用程序只有在最后有一个斜线的时候才起作用。
所以这个工程: https://example.com/main/site/react/ : https://example.com/main/site/react/
这不: https://example.com/main/site/react : https://example.com/main/site/react
这是我正在使用的configuration:
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 : https://example.com/main/site/react/static/js/bundle.js 。 它总是呈现索引HTML页面。
你的configuration看起来不错。 只需在最后添加重写:
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; }
也有修改正则expression式,将处理查询参数前的斜线。