Nginx proxy_pass 在我配置错误页面时停止工作
Nginx proxy_pass stoped working when I was configuring error pages
我试图为 关闭 时代理服务器后面的情况制作 500 错误页面,为未找到静态页面制作 404 错误页面。
我已经为 messenger
从 proxy_pass
到 localhost:8080
工作,但是在添加自定义错误页面时,我不得不搞砸了一些事情,它停止了工作。错误页面运行良好,但 mydomain.d/messenger/
returns 404 19
(我从日志中知道)但 return 自定义页面没有。
erver {
server_name mydomain.d;
# newly added
location / {
proxy_pass "http://localhost:8081/";
}
# newly added
location /webapp/planner/ {
proxy_pass "http://localhost:8082/";
}
# was working for some time
location /messenger/ {
proxy_pass "http://localhost:8080/";
}
# newly added
location /static/ {
alias /home/static/;
}
# newly added
error_page 404 /err404.html;
location = /err404.html {
root /home/server/errors/err404;
}
# newly added
error_page 500 502 503 504 /err500.html;
location = /err500.html {
root /home/server/errors/err500;
}
...
我在制作错误页面时只更改了这个配置。
curl localhost:8080/messenger/xxx
给出了预期的输出。
https://mydomain.d/messenger/xxx
将我重定向到:
https://mydomain.d/xxx
与 404 error
页。
总而言之:当为静态文件访问配置错误页面时以及代理服务器关闭的情况下,我不小心破坏了对 /messenger/
的 proxy_pass
访问,现在只有 return 和 404 19
错误。
解决方法是什么?
我找到了问题的答案:
proxy_pass
地址末尾有不必要的 /
。
错误:
location /messenger/ {
proxy_pass "http://localhost:8080/";
}
右:
location /messenger/ {
proxy_pass "http://localhost:8080"; #<-- here the '/' at end is gone
}
我试图为 关闭 时代理服务器后面的情况制作 500 错误页面,为未找到静态页面制作 404 错误页面。
我已经为 messenger
从 proxy_pass
到 localhost:8080
工作,但是在添加自定义错误页面时,我不得不搞砸了一些事情,它停止了工作。错误页面运行良好,但 mydomain.d/messenger/
returns 404 19
(我从日志中知道)但 return 自定义页面没有。
erver {
server_name mydomain.d;
# newly added
location / {
proxy_pass "http://localhost:8081/";
}
# newly added
location /webapp/planner/ {
proxy_pass "http://localhost:8082/";
}
# was working for some time
location /messenger/ {
proxy_pass "http://localhost:8080/";
}
# newly added
location /static/ {
alias /home/static/;
}
# newly added
error_page 404 /err404.html;
location = /err404.html {
root /home/server/errors/err404;
}
# newly added
error_page 500 502 503 504 /err500.html;
location = /err500.html {
root /home/server/errors/err500;
}
...
我在制作错误页面时只更改了这个配置。
curl localhost:8080/messenger/xxx
给出了预期的输出。
https://mydomain.d/messenger/xxx
将我重定向到:
https://mydomain.d/xxx
与 404 error
页。
总而言之:当为静态文件访问配置错误页面时以及代理服务器关闭的情况下,我不小心破坏了对 /messenger/
的 proxy_pass
访问,现在只有 return 和 404 19
错误。
解决方法是什么?
我找到了问题的答案:
proxy_pass
地址末尾有不必要的 /
。
错误:
location /messenger/ {
proxy_pass "http://localhost:8080/";
}
右:
location /messenger/ {
proxy_pass "http://localhost:8080"; #<-- here the '/' at end is gone
}