Score:0

ไม่สามารถสร้างการเชื่อมต่อ wss [React + ASP.NET Core, SignalR + nginx]

ธง bq

ฉันมีแอป React ที่พูดคุยกับ Asp.Net core API ทั้งคู่ถูกปรับใช้บน Docker บน VM ของฉัน Nginx ได้รับการติดตั้งและกำหนดค่าเพื่อแก้ไขชื่อโดเมนสำหรับแอป (thesis.uno - สำหรับแอป react, api.thesis.uno - สำหรับ asp.net core api)

ฉันเพิ่มการสนับสนุนการแชทในแอปของฉันโดยใช้ SignalR แต่เมื่อ react พยายามสร้างการเชื่อมต่อ wss ผ่าน api.thesis.uno มันล้มเหลว ป้อนคำอธิบายรูปภาพที่นี่

เมื่อฉันแทนที่ชื่อโดเมน api ด้วย VM ip และพอร์ต ทุกอย่างดูเหมือนจะทำงานได้อย่างถูกต้อง ซึ่งหมายความว่าปัญหาอยู่ในการกำหนดค่า Nginx

ป้อนคำอธิบายรูปภาพที่นี่

ฉันพยายาม google ปัญหานี้ แต่ดูเหมือนจะไม่มีทางแก้ไขใดที่จะช่วยฉันได้ (https://stackoverflow.com/questions/48300288/signalr-in-asp-net-core-behind-nginx, https://stackoverflow.com/questions/12102110/nginx-to-reverse-proxy-websockets-and-enable-ssl-wss)

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

client_max_body_size 64M;

แบ็กเอนด์ต้นน้ำ {
    # เปิดใช้งานเซสชันที่เหนียวตาม IP
    ip_hash;

    เซิร์ฟเวอร์ localhost:5000;
  }

เซิร์ฟเวอร์ {
    รูท /var/www/thesis.uno/html; # ให้บริการทุกอย่างโดยตรงในโฟลเดอร์สาธารณะของ Rails
    ดัชนี index.html index.htm index.nginx-debian.html;
    server_name thesis.uno www.thesis.uno; # จัดการโดย Certbot

    ที่ตั้ง / {
        proxy_pass http://localhost:5001;
        proxy_set_header โฮสต์ $host;
    }

    ฟัง 443 ssl; # จัดการโดย Certbot
    ssl_certificate /etc/letsencrypt/live/thesis.uno/fullchain.pem; # จัดการโดย Certbot
    ssl_certificate_key /etc/letsencrypt/live/thesis.uno/privkey.pem; # จัดการโดย Certbot
    รวม /etc/letsencrypt/options-ssl-nginx.conf; # จัดการโดย Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # จัดการโดย Certbot
}

เซิร์ฟเวอร์ {
    ถ้า ($host = www.thesis.uno) {
        ส่งคืน 301 https://$host$request_uri;
    } # จัดการโดย Certbot


    ถ้า ($host = thesis.uno) {
        ส่งคืน 301 https://$host$request_uri;
    } # จัดการโดย Certbot

    ฟัง 80 ;
    server_name thesis.uno www.thesis.uno;
    กลับ 404; # จัดการโดย Certbot
}

เซิร์ฟเวอร์ {
    server_name api.thesis.uno www.api.thesis.uno;

    #คำขออื่น ๆ ทั้งหมด
    ที่ตั้ง / {
        proxy_pass http://แบ็กเอนด์;
        proxy_set_header โฮสต์ $host;
    }

    # คำขอแชทบนเว็บซ็อกเก็ต
    ตำแหน่ง /api/แชท {
        proxy_pass http://แบ็กเอนด์;
        proxy_http_version 1.1;
        proxy_set_header อัพเกรด $http_upgrade;
        proxy_set_header การเชื่อมต่อ $http_connection;
        proxy_set_header โฮสต์ $host;
        proxy_cache_bypass $http_upgrade;
    }

    ฟัง 443 ssl; # จัดการโดย Certbot
    ssl_certificate /etc/letsencrypt/live/api.thesis.uno/fullchain.pem; # จัดการโดย Certbot
    ssl_certificate_key /etc/letsencrypt/live/api.thesis.uno/privkey.pem; # จัดการโดย Certbot
    รวม /etc/letsencrypt/options-ssl-nginx.conf; # จัดการโดย Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # จัดการโดย Certbot
}

เซิร์ฟเวอร์ {
    ถ้า ($host = www.api.thesis.uno) {
        ส่งคืน 301 https://$host$request_uri;
    } # จัดการโดย Certbot


    ถ้า ($host = api.thesis.uno) {
        ส่งคืน 301 https://$host$request_uri;
    } # จัดการโดย Certbot

    ฟัง 80;
    server_name api.thesis.uno www.api.thesis.uno;
    กลับ 404; # จัดการโดย Certbot
}

อัปเดต:

ปรากฎว่า nginx มีไฟล์บันทึก ดูเหมือนว่า nginx ไม่สามารถเปลี่ยนเส้นทางคำขอได้อย่างถูกต้อง ให้ 404 ตามคำขอ

ป้อนคำอธิบายรูปภาพที่นี่

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา