ฉันไม่เคยมีปัญหาใดๆ กับคอนเทนเนอร์ Docker หรือ NGINX จนกระทั่งวันนี้ที่ฉันได้รับข้อผิดพลาด 502 Bad Gateway แบบสุ่มที่ไม่คาดคิด แม้ว่าฉันจะไม่ได้ทำการเปลี่ยนแปลงใดๆ กับไฟล์การกำหนดค่า ไฟล์ Docker หรือไฟล์อื่นๆ ในโปรเจ็กต์ของฉันก็ตาม
ข้อผิดพลาด 502 จาก /var/log/nginx/reverse-access.log
:
9.160.81.63 - - [25/Mar/2022:20:40:50 +0000] "GET /api/get_info HTTP/1.1" 502 559 "https://example.com:4000/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML เช่น Gecko) Chrome/99.0.4844.82 Safari/537.36"
ข้อความแสดงข้อผิดพลาดจาก /var/log/nginx/reverse-error.log
:
[ข้อผิดพลาด] 26#26: *6 การเชื่อมต่อ() ล้มเหลว (111: การเชื่อมต่อถูกปฏิเสธ) ขณะเชื่อมต่อกับอัปสตรีม ไคลเอ็นต์: 9.160.81.63 เซิร์ฟเวอร์: คำขอ: "GET /api/get_info HTTP/1.1", อัปสตรีม: "https ://0.0.0.0:5000/api/get_info", โฮสต์: "example.com:4000", ผู้อ้างอิง: "https://example.com:4000/"
/etc/nginx/conf.d/default.conf
:
เซิร์ฟเวอร์ {
ฟัง 8765 ssl default_server;
รูท /usr/share/nginx/html;
ดัชนี index.html index.html;
ssl_certificate /etc/ssl/certs/example_project/cert.pem;
ssl_certificate_key /etc/ssl/certs/example_project/key.pem;
ssl_dhparam /etc/ssl/certs/example_project/dhparam.pem;
เปิด ssl;
ssl_session_cache ในตัว:1000 แชร์:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers สูง:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
เปิด ssl_prefer_server_ciphers;
ssl_session_timeout 60m;
access_log /var/log/nginx/reverse-access.log;
error_log /var/log/nginx/reverse-error.log;
ที่ตั้ง / {
try_files $uri /index.html =404;
}
ที่ตั้ง /api {
proxy_pass https://0.0.0.0:5000/api;
proxy_redirect เริ่มต้น;
proxy_set_header อัพเกรด $http_upgrade;
proxy_set_header การเชื่อมต่อ "อัพเกรด";
proxy_set_header โฮสต์ $host:4000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-ส่งต่อ-สำหรับ $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
}
ทั้งหมดนี้ทำงานบน โหนด:15.7.0-alpine3.10
คอนเทนเนอร์ที่ใช้ด้วย nginx:เสถียรอัลไพน์
. อีกครั้ง ฉันไม่เคยเจอข้อผิดพลาดนี้มาก่อน และฉันได้ยอมรับการเปลี่ยนแปลงใหม่ในโครงการของฉันเป็นศูนย์ เหตุใดข้อผิดพลาดนี้จึงเกิดขึ้นในขณะนี้ และฉันจะแก้ไขได้อย่างไร