【问题标题】:How to catch reverse proxy errors with Nginx?如何使用 Nginx 捕获反向代理错误?
【发布时间】:2020-03-12 22:33:13
【问题描述】:

TL;DR 我不是在谈论 HTTP 错误,而是关于内部连接被拒绝错误

嗨!

我正在使用 Nginx 和 Django 为后端开发一个网站。 Nginx 用作来自另一台服务器的反向代理。我也在使用 Cloudflare。这是我的网站配置:

server {
    listen 80;
    server_name my.website.fr;

    proxy_intercept_errors on;

    location / {
        proxy_pass http://192.168.0.128:9001;
    }

    error_page 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 420 422 423 424 426 428 429 431 444 449 450 451 500 501 502 503 504 505 506 507 508 509 510 511 /index.html;

    location /index.html {
      root   /var/www/maintenance;
      internal;
    }
}

当我的后端服务器 (192.168.0.128) 启动并运行时,一切正常。但是,当我的 Django 服务关闭时,我的 nginx 日志中出现连接被拒绝 (111) 错误和 Cloudflare 的错误页面 502 bad gateway。

有没有办法捕捉这些“低级”网络错误并显示我的维护页面?

谢谢!

【问题讨论】:

  • 我不了解 cloudflare,但看起来 cloudflare 正在响应错误而不是您的 nginx
  • @Horacio 是的,但我不知道为什么

标签: nginx cloudflare nginx-reverse-proxy


【解决方案1】:

我解决了我的问题。我以前的 conf 只处理错误的“/index.html”连接。这是我的新配置:

server {
listen 80;
server_name test.tcoolmax.fr;

proxy_intercept_errors on;

location /maintenance {
    proxy_pass http://localhost:8080;
}

location / {
    proxy_pass http://192.168.0.128:9001;
}

error_page 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 420 422 423 424 426 428 429 431 444 449 450 451 500 501 502 503 504 505 506 507 508 509 510 511 maintenance;
}

【讨论】:

    猜你喜欢
    • 2021-07-01
    • 2016-05-22
    • 1970-01-01
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    • 2020-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多