NGINX可以在proxy_pass之后更改响应代码吗?

时间:2016-02-09 21:31:31

标签: amazon-web-services nginx amazon-s3

所以我在/api/下有一个内部API服务器命名空间,我希望使用proxy_pass将所有其他请求传递到Amazon S3静态站点。这一切都很好,只是因为亚马逊正在服务单页应用程序,我想总是返回相同的HTML文件。他们用S3服务器这样做的方法是将索引和错误页面设置为同一个文件。表面看起来一切都很好,但除了/之外的所有其他请求,S3实例返回404.我可以使用NGINX将其更改为200,然后再将其返回给客户端吗?

server {
  listen 80;
  server_name example.com;

  location /api/ {
    # serve internal app
  }

  location / {
    proxy_pass http://example.amazonaws.com/;
    # ALWAYS RETURN A 200
  }
}

1 个答案:

答案 0 :(得分:1)

您应该能够使用error_page和proxy_intercept_errors指令来实现此目的。这样的事情可以解决问题。

location / {
    proxy_pass http://example.amazonaws.com/;
    proxy_intercept_errors on;
    error_page 404 =302 /your_html_file
}