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

时间:2016-09-05 10:28:09

标签: angularjs http nginx forward

我在我的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。到目前为止也很完美。

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

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

您的指定位置正在强制重定向。 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; 

有关详情,请参阅revised fiddle