wp8856495 2016-06-17 07:15 采纳率: 0%
浏览 1745

nginx请求proxy_pass后配置404错误界面

listen 80;
server_name localhost;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;            
    fastcgi_intercept_errors on;
    proxy_intercept_errors on;          
    root html;              
    error_page  404    /404.html;
    error_page  500 502 503 504   /50x.html;

    location / {
        proxy_set_header Host $host;
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-Proto  $scheme;
        proxy_set_header X-Forwarded-For $remote_addr;
  index  index.html index.htm;
        #access_log  logs/webroot.log;
        #proxy_intercept_errors on;
      proxy_pass http://tomcat_server/webroot/;         

}

当请求资源不存在后出现404并未返回Nginx目录下的自定义的404.html,而是去被转发的站点webroot下面找404界面了,
因为有多个应用程序部署在不同的服务器然后由Nginx进行转发,我现在想把所有的错误界面都放在Nginx目录下统一处理,在出现404,500之类的错误后由Nginx直接返回Nginx目录下预先自定义好的界面

  • 写回答

1条回答

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-10-25 19:21
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 你可以参考下这篇文章:nginx error_page 和 proxy_intercept_errors 指令,404错误页面跳转
    • 除此之外, 这篇博客: 记录一次 Nginx 配置 proxy_pass 后 返回404问题中的 服务器名称和端口一起通过代理服务器传递,相对上一项,多了一个 $proxy_port,这个 $proxy_port 是proxy_pass 里面的那个端口,如果没有端口,像80 和 443 的话。也是会使用 80 /443 填充, 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

      示例:
      proxy_pass http://www.baidu.com;

      host:host:host:proxy_port = 百度ip:80

      1. $http_host

      proxy_set_header Host $http_host;


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误
  • ¥15 用visual studi code完成html页面