将网站部署到在端口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"
1条答案
按热度按时间ttcibm8c1#
我不知道为什么,但是解决这个问题的方法是用
127.0.0.1
替换localhost
。我仍然想理解为什么它在
127.0.0.1
上工作而不是localhost
上