ฉันมีการตั้งค่าพร็อกซี nginx สองตัวบนเครื่องของฉัน อันหนึ่งสำหรับแกะ SSL และอีกอันสำหรับทำพร็อกซีเฉพาะแอปพลิเคชัน (เฉพาะอันที่สองเท่านั้นที่ควบคุมเวอร์ชัน) เมื่อฉันมีพรอกซีเพียงอันเดียว ฉันก็สามารถเชื่อมต่อเว็บซ็อกเก็ตได้สำเร็จ แต่หลังจากย้ายไปสองคำขออัปเกรดเว็บซ็อกเก็ตทั้งหมดจะได้รับการตอบสนองด้วยข้อผิดพลาด 502 Bad Gateway ฉันสามารถยืนยันได้ว่าคำขอ http/https ปกติทำงานกับการตั้งค่าพร็อกซีคู่ของฉัน นี่คือการกำหนดค่าปัจจุบันของฉัน
หนังสือมอบฉันทะ1
เซิร์ฟเวอร์ {
# การกำหนดค่า SSL
#
# ฟัง 443 ssl default_server;
# ฟัง [::]:443 ssl default_server;
#
# หมายเหตุ: คุณควรปิดการใช้งาน gzip สำหรับการรับส่งข้อมูล SSL
# ดู: https://bugs.debian.org/773332
#
# อ่านข้อมูลเพิ่มเติมเกี่ยวกับ ssl_ciphers เพื่อให้แน่ใจว่ามีการกำหนดค่าที่ปลอดภัย
# ดู: https://bugs.debian.org/765782
#
# ใบรับรองที่ลงนามด้วยตนเองที่สร้างขึ้นโดยแพ็คเกจ ssl-cert
# ห้ามใช้ในเซิร์ฟเวอร์ที่ใช้งานจริง!
#
# รวมตัวอย่าง/snakeoil.conf;
server_name staging.ambitx.io;
ที่ตั้ง / {
proxy_pass http://127.0.0.1:81;
รวม proxy_params;
}
ฟัง [::]:443 ssl ipv6only=เปิด; # จัดการโดย Certbot
ฟัง 443 ssl; # จัดการโดย Certbot
ssl_certificate /etc/letsencrypt/live/staging.ambitx.io/fullchain.pem; # จัดการโดย Certbot
ssl_certificate_key /etc/letsencrypt/live/staging.ambitx.io/privkey.pem; # จัดการโดย Certbot
รวม /etc/letsencrypt/options-ssl-nginx.conf; # จัดการโดย Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # จัดการโดย Certbot
}
เซิร์ฟเวอร์ {
ถ้า ($host = staging.ambitx.io) {
ส่งคืน 301 https://$host$request_uri;
} # จัดการโดย Certbot
ฟัง 80 default_server;
ฟัง [::]:80 default_server;
server_name staging.ambitx.io;
กลับ 404; # จัดการโดย Certbot
}
proxy_params
proxy_set_header โฮสต์ $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-ส่งต่อ-สำหรับ $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
หนังสือมอบฉันทะ2
(ทำงานบนนักเทียบท่าที่มีพอร์ต 81 บนเครื่องโฮสต์ที่เชื่อมโยงกับพอร์ต 80 บนคอนเทนเนอร์)
ตัวแก้ไข 127.0.0.11 ipv6=ปิด;
เซิร์ฟเวอร์ {
ฟัง 80;
ฟัง [::]:80;
ที่ตั้ง / {
รูท /var/www/staticfiles;
ดัชนี index.html index.htm;
try_files $uri /index.html =404;
}
ที่ตั้ง /ws {
access_log off;
proxy_pass http://wsserver;
proxy_http_version 1.1;
proxy_set_header อัพเกรด $http_upgrade;
proxy_set_header การเชื่อมต่อ "อัพเกรด";
}
ที่ตั้ง /api {
proxy_pass http://apiserver;
}
}
เดิมฉันมีข้อความด้านล่างใน ที่ตั้ง /ว
บล็อกการกำหนดค่าของ Proxy 2...
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header โฮสต์ $host;
proxy_set_header X-ส่งต่อ-สำหรับ $proxy_add_x_forwarded_for;
แต่ฉันลบออกเพราะจะเขียนทับส่วนหัวที่กำหนดโดย Proxy 1
ความคิดใด ๆ ? โปรดแจ้งให้เราทราบหากคุณต้องการข้อมูลเพิ่มเติม