เรามีพร็อกซีย้อนกลับ NGINX (คลัสเตอร์) ที่มี 45 อัพสตรีม (22 โดเมน 20 โดเมนย่อย 11 แอป)

บางโปรเจ็กต์ของเราโฮสต์ apis สำหรับผู้ใช้บางคนทั่วโลก

นักพัฒนาของเราออกแบบการตอบกลับแบบกำหนดเองพิเศษ 500 รายการสำหรับกรณีพิเศษ และต้องการแสดงว่าข้อความนั้นเฉพาะสำหรับ tomcat_api อัปสตรีมเท่านั้น

พวกเขาต้องการให้บริการ 500 หน้าและจัดการข้อยกเว้นสำหรับสมาชิกต้นน้ำ tomcat_api ที่ไม่ใช่ NGINX แต่เราต้องการจัดการข้อผิดพลาด 5xx อื่นๆ ทั้งหมดใน NGINX

เนื่องจากฉันไม่สามารถประสบความสำเร็จได้ในขณะนี้

นี่คือการกำหนดค่าเซิร์ฟเวอร์ดังต่อไปนี้ คุณช่วยได้ไหม?

server { 
  server_name api.hotcoldwarm.com;

  location / {
    add_header X-Frame-Options SAMEORIGIN;
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    add_header x-redirect-uri hotcoldwarm;
    add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; always";
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://tomcat_api;
    proxy_next_upstream error timeout http_502 http_503 http_504 http_404;
    proxy_connect_timeout   1;
  }
    listen 80;
    listen 443 ssl;
    ssl_certificate /etc/rapidssl/live/api.hotcoldwarm.com/fullchain.pem;
    ssl_certificate_key /etc/rapidssl/live/api.hotcoldwarm.com/privkey.pem;
    include /etc/rapidssl/options-ssl-nginx.conf;
    if ($scheme != "https") {
        return 301 https://$host$request_uri;
    }

}

ขอขอบคุณ.

answer

คุณอาจต้องการพิจารณาproxy_intercept_errors on;ตัวเลือก จากนั้นกำหนดค่ากำหนดเองerror_pageหลังจากนั้น ดูคำตอบhttps://stackoverflow.com/a/8715597/434255