nginx: การเชื่อมต่อ () ล้มเหลว (111: การเชื่อมต่อถูกปฏิเสธ) ในขณะที่เชื่อมต่อกับอัปสตรีม


16

ฉันเห็นข้อความแสดงข้อผิดพลาดด้านล่างนี้ในบันทึกข้อผิดพลาดฉันสามารถเข้าถึงทรัพยากรทั้งหมด แต่ฉันไม่แน่ใจว่าทำไมข้อผิดพลาดคือการตั้งค่าสถานะ

ข้อผิดพลาด:

[ข้อผิดพลาด] 13368 # 0: * 449 การเชื่อมต่อ () ล้มเหลว (111: การเชื่อมต่อถูกปฏิเสธ) ในขณะที่เชื่อมต่อกับอัปสตรีมไคลเอนต์: xxxx, เซิร์ฟเวอร์: myserver.com คำขอ: "GET / Stories / mine HTTP / 1.1", upstream: " http: // [:: 1]: 5000 / เรื่อง / ของฉัน ", โฮสต์:" myserver.com "

การกำหนดค่า Nginx ของฉัน

ฉันกำลังเชื่อมต่อผ่านไปยังnode.jsคลัสเตอร์ที่ทำงานบนพอร์ต 5000 ไม่เห็นสิ่งที่ฉันจะพลาดหรือไม่

upstream api {
    server localhost:5000;
}

server {
    listen 80; 
    server_name myserver.com;
    root /home/user/_api;


# Logging 

error_log /home/user/log/api.error.log notice;
    location / {
        proxy_redirect off;
        proxy_set_header   X-Real-IP            $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
        proxy_set_header   Host                   $http_host;
        proxy_set_header   X-NginX-Proxy    true;
        proxy_set_header   Connection "";
        proxy_cache one;
        proxy_cache_key sfs$request_uri$scheme;
        proxy_pass         http://api;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

ปี 2558 และฉันมีปัญหาเดียวกันนี้ ทุกครั้งที่ข้อความ websocket หลุดข้อผิดพลาดนี้จะปรากฏในบันทึก
r3wt

คำตอบ:


19

Nginx เชื่อมต่อกับ nodjs บน IPv6 loopback [:: 1] nodejs น่าจะเป็นแค่ฟังบน IPv4

ลองตั้งค่า

upstream api {
    server 127.0.0.1:5000;
}
...

สำหรับผู้ที่สับสนให้เปลี่ยนlocalhostเป็น127.0.0.1
kouton

ความคิดใด ๆ ถ้าฉันมี 127.0.0.1 แทน localhost และสิ่งนี้เกิดขึ้นได้อย่างไร
Ken

3
คุณควรตรวจสอบว่าบริการกำลังฟังอยู่หรือไม่ ลองsudo netstat -pantuดูว่าบริการนั้นกำลังฟังอยู่บนพอร์ตหรือไม่
Christopher Perrin

1
@ChristopherPerrin ขอบคุณสำหรับคำแนะนำนั้น มันช่วยให้ฉันรู้ว่าหนึ่งในสระของฉันไม่ฟังพอร์ตและมันกลับกลายเป็นว่าเนื่องจากการกำหนดค่าพูลอื่นใช้ชื่อเดียวกันอีกครั้งเพื่อเขียนทับการกำหนดค่า
Robbie Averill

@RobbieAverill ดีที่จะได้ยินว่าคำตอบนี้ยังคงเป็นประโยชน์
คริสเพอร์ริน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.