服务反向代理站点的404页面,而不是NGINX的502页面

iszxjhcz  于 2023-05-22  发布在  Nginx
关注(0)|答案(1)|浏览(131)

将网站部署到在端口8000上运行的服务器。这是一个基于NextJS的网站,通过yarn start命令在服务器模式下运行。
NextJS服务器位于NGINX服务器的后面。(使用NGINX作为反向代理服务器)
我在404和5xx页中遇到了问题。NextJS内置了404或5xx页面的功能,但在我们的情况下,如果我们遇到网站的无效路由,我们会得到502页的NGINX,从技术上讲,应该返回404页的NextJS。
我想要的是能够服务于NextJS的404或500页,而不是NGINX (我们已经内部验证了该网站在端口8000上运行,如果浏览器触发无效路由,则由NextJS提供404页)
这里是我们的反向代理的配置块。

#PROXY-START/

location ^~ /
{
    proxy_pass http://localhost:8000;
    proxy_set_header Host localhost;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;

    error_page 404 /404;
    error_page 500 /500;

    #Persistent connection related configuration

    add_header X-Cache $upstream_cache_status;

    #Set Nginx Cache
    
    
    set $static_file4EjPNqQe 0;
    if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" )
    {
        set $static_file4EjPNqQe 1;
        expires 12h;
        }
    if ( $static_file4EjPNqQe = 0 )
    {
    add_header Cache-Control no-cache;
    }
}

#PROXY-END/

下面是访问日志:

66.77.88.99 - - [18/May/2023:13:03:17 +0000] "GET /ttyyrereewww HTTP/1.1" 502 552 "-" "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Mobile Safari/537.36 Edg/113.0.1774.42"

下面是错误日志:

2023/05/18 13:03:08 [error] 3802465#0: *249566 connect() failed (111: Connection refused) while connecting to upstream, client: 66.77.88.99, server: pre.com, request: "GET /ttyyreree HTTP/1.1", upstream: "http://[::1]:8000/ttyyreree", host: "pre.com"
2023/05/18 13:03:17 [error] 3802465#0: *249566 no live upstreams while connecting to upstream, client: 66.77.88.99, server: pre.com, request: "GET /ttyyrereewww HTTP/1.1", upstream: "http://localhost/ttyyrereewww", host: "pre.com"
ttcibm8c

ttcibm8c1#

我不知道为什么,但是解决这个问题的方法是用127.0.0.1替换localhost
我仍然想理解为什么它在127.0.0.1上工作而不是localhost

相关问题