有没有办法在 nginx 中从代理转发页面?

Is there a way to forward a page from proxy in nginx?

我在 nginx.conf 中配置了反向代理,效果很好。

location /foo/ {
    proxy_pass http://localhost:5000/;
    proxy_intercept_errors on;
    proxy_redirect   off;
}

我也处理错误请求:

location @404 {
    #redirect to http://localhost:5000/foo/index.html
    return 302 /foo/index.html; 
}
error_page 404 = @404;

如您所见,我使用 302 重定向到 index.html。到目前为止也很完美。

但我想要的不是重定向。我想将索引页面转发到浏览器。 (我需要转发的原因是我想在启用 html5 模式并删除 angularjs 应用程序中的 # 时处理刷新问题。)

那么有办法做到这一点吗?

您指定的位置正在强制重定向。 error_page 处理不需要重定向。您可以在 error_page 语句中指定本地 URI,由您的代理位置处理:

例如:

location /foo/ {
    proxy_pass http://localhost:5000/;
    proxy_intercept_errors on;
    proxy_redirect   off;
}
error_page 404 = /foo/index.html; 

有关更多信息,请参阅 this document