mod-rewrite - nginx 代理和 404 重定向

标签 mod-rewrite proxy amazon-s3 nginx http-status-code-404

嗨,我想将我的 nginx 服务器配置为代理 amazon S3 并在 apache 中执行类似 mod_rewrite 的操作-如果 amazon 的代理为 404(亚马逊上不存在文件),则将我重定向到我的本地文件。有可能吗?

这是我的 nginx 配置文件:

upstream app{
 server 127.0.0.1:3000;
}

server {
  listen 0.0.0.0:80;
  server_name www.mypage.com mypage.com;
  access_log /var/log/nginx/mypagecom.log;

  location /photos{
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_pass http://amazons3.mypage.com/photos;
    proxy_redirect off;
    error_page 404 /myerrorfile.jpg;
  }
  location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;

    proxy_pass http://app;
    proxy_redirect off;
  }


}

谁能帮我 ?

最佳答案

添加

proxy_intercept_errors on;

location /photos .那么你的 error_page 404 /myerrorfile.jpg即使 404 错误来自上游服务器也能正常工作。

关于mod-rewrite - nginx 代理和 404 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8278808/

相关文章:

amazon-web-services - AWS Lambda@edge。在原始响应触发函数中访问浏览器cookie

amazon-s3 - 亚马逊SimpleDB

apache - htaccess 基于 TLD 重写 URL

WCF 自定义 Http 代理身份验证

nginx - Docker Nginx 代理 : how to route traffic to different container using path and not hostname

javascript - 代理类的 TypeError - TypeError : 'set' on proxy: trap returned truish for property

Javascript 调用相对路径而不是从 Web 根目录调用

基于 PHP 类 OOP 的 Apache Mod 重写系统(固定链接 - 友好的 URL)

wordpress - 让 WordPress 永久链接在 MAMP 安装上运行

python - AWS Lambda 函数触发两次