Score:0

บริการเว็บ HTTPS และบริการแบ็กเอนด์บนเซิร์ฟเวอร์เดียวกัน

ธง ne

มีวิธีการตั้งค่าบริการแบ็กเอนด์เพื่อฟังบน HTTPS บนบริการเว็บที่มีอยู่แล้วซึ่งให้บริการบน HTTPS อยู่แล้วหรือไม่

เดิมทีฉันให้บริการทั้งสองอย่างบน HTTP แต่เพิ่งเพิ่ม CA สำหรับบริการเว็บ ทั้งสองทำงานได้ดีบน HTTP แต่เมื่อพยายามเข้าถึงแบ็กเอนด์ (จากพอร์ต 5,000) จาก HTTPS ฉันไม่ได้รับการตอบสนอง (แต่เดิมฉันให้บริการแบ็กเอนด์ด้วย PM2) ฉันจำเป็นต้องอัปเดตการโทร ajax จากส่วนหน้าเพื่อเรียกแบ็กเอนด์บน HTTPS แทน HTTP

ฉันค้นหาการใช้ NGINX สำหรับแบ็กเอนด์ แต่ไม่พบทรัพยากรสำหรับสถานการณ์เฉพาะของฉัน และฉันไม่รู้ว่าจะกำหนดค่า NGINX ให้ฟังบนพอร์ต 5000 สำหรับ HTTPS ได้อย่างไร (ซึ่งไม่สมเหตุสมผลสำหรับฉันเนื่องจาก HTTPS เป็นพอร์ต 443)

Michael Hampton avatar
cz flag
โปรดโพสต์ผลลัพธ์ของ `nginx -T`
Gerard H. Pille avatar
in flag
Https ไม่ใช่พอร์ต 443 โปรโตคอลนั้นสามารถใช้กับพอร์ตใดก็ได้โดยไคลเอนต์และเซิร์ฟเวอร์
Score:0
ธง za

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

ข้อมูลเบื้องต้น

ผู้ใช้แจ้งว่าต้องการฟังหรือพอร์ต 5,000 สำหรับ https

เปลี่ยนเส้นทาง http เป็น https มาตรฐาน

เซิร์ฟเวอร์ {
        server_name *.domain.tld โดเมน.tld;
        #ฟังพอร์ต 80
        ฟัง 80;
        #เปลี่ยนเส้นทางไปที่ https
        ส่งคืน 301 https://$host$request_uri; 
}

ฟัง NGINX บนพอร์ต 5000

เซิร์ฟเวอร์ {
        server_name *.domain.tld โดเมน.tld;
        #ฟังพอร์ต 5000, http
        ฟัง 5,000;
        #เพิ่มของที่นี่
}

คำสั่งเซิร์ฟเวอร์ https มาตรฐาน โดยใช้ Certbot สำหรับการสร้างใบรับรอง

เซิร์ฟเวอร์ {
        #ฟังบน 443 สำหรับ SSL (https) ด้วย http 1.0/1.1
        #ฟัง 443 ssl;
        
        #ฟัง 44 สำหรับ SSL (https) กับ http 2
        ฟัง 443 ssl http2;
        
        #สิ่งที่เราฟังสำหรับโดเมน      
        server_name *.domain.tld โดเมน.tld;
                ที่ตั้ง / {
                รูท /var/www/vhosts/domain.tld;
}
    ssl_certificate /etc/letsencrypt/live/domain.tld/fullchain.pem; # จัดการโดย Certbot
    ssl_certificate_key /etc/letsencrypt/live/domain.tld/privkey.pem; # จัดการโดย Certbot
}

Reverse-Proxy พื้นฐานฟังบนพอร์ต 80 http และพอร์ต 443 SSL

เซิร์ฟเวอร์ {
        #ฟังบน 80 สำหรับ https ด้วย http 1.0/1.1
        ฟัง 80;
        
        #ฟัง 80 สำหรับ https ด้วย http 2 (ปิดใช้งาน certbot ไม่เข้าใจในพอร์ต 80)
        #ฟัง80 http2;

        #ฟังบน 443 สำหรับ SSL (https) ด้วย http 1.0/1.1
        #ฟัง 443 ssl;
        
        #ฟัง 44 สำหรับ SSL (https) กับ http 2
        ฟัง 443 ssl http2;
        
        #สิ่งที่เราฟังสำหรับโดเมน      
        server_name *.domain.tld โดเมน.tld;
                ที่ตั้ง / {
                        proxy_pass http://127.0.0.1:5000;

                        #https ยังใช้งานได้
                        #proxy_pass https://127.0.0.1:5000;                            
                        proxy_set_header โฮสต์ $http_host;
}
    ssl_certificate /etc/letsencrypt/live/domain.tld/fullchain.pem; #บริหารจัดการโดย 
    เซอร์บอท
    ssl_certificate_key /etc/letsencrypt/live/domain.tld/privkey.pem; #บริหารจัดการโดย 
    เซอร์บอท
}

ข้อสรุป

หากคุณต้องการเข้าถึงแบ็กเอนด์ของคุณบนพอร์ต 5000 คุณต้องใช้ proxy_passถ้าคุณต้องการให้ NGINX ฟังบนพอร์ต 5000 ในกรณีที่ไม่ได้ใช้ฟัง ฟัง 5,000 ssl;

และอย่างที่คนอื่นพูดไปแล้วว่า SSL เป็นโปรโตคอลและไม่ได้ผูกมัดกับพอร์ตใดพอร์ตหนึ่ง มักใช้ 443 แต่ห้ามฟัง ฉันสามารถใช้ 61337 สำหรับมันได้

ฉันจะอัปเดตคำตอบในกรณีที่ OP จะอัปเดตคำถาม

โพสต์คำตอบ

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