ฉันมีการตั้งค่าพร็อกซี 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
ความคิดใด ๆ ? โปรดแจ้งให้เราทราบหากคุณต้องการข้อมูลเพิ่มเติม