Score:0

HTTPS หยุดการเชื่อมต่อ Socket.io

ธง ch

คำอธิบายข้อบกพร่อง
ฉันมี Rasa chatbots ในสภาพแวดล้อมการทดสอบของฉันทำงานในคอนเทนเนอร์นักเทียบท่าส่วนหน้าของ Chatbot เป็นวิดเจ็ตเว็บแชท Botfront ในเว็บไซต์ที่ให้บริการโดย Apache2 ในเซิร์ฟเวอร์เดียวกัน ฉันยังติดตั้ง Nginx เป็นพร็อกซีย้อนกลับซึ่งให้บริการโดเมนเสมือนของ Apache Chatbot ทำงานโดยตรงจาก Apache http://testibotti2.omnia.fi:444/ และผ่านพร็อกซีย้อนกลับ http://testibotti2.omnia.fi/ แต่เมื่อใช้ https มันล้มเหลว เช่น วิดเจ็ตแชทบอทไม่แสดง https://testibot1.omnia.fi/

สภาพแวดล้อมของฉัน

เวอร์ชันเซิร์ฟเวอร์: Apache/2.4.41 (Ubuntu)  
รุ่น nginx: nginx/1.18.0 (Ubuntu  
อูบุนตู 18.04  
นักเทียบท่าเวอร์ชัน 20.10.9 สร้าง c2ea9bc  
นักเทียบท่าเขียนเวอร์ชัน 1.29.2 สร้าง 5becea4c  

ไฟล์กำหนดค่า

Nginx reverse proxy (ฉันได้แสดงความคิดเห็นในส่วน testibotti2 SSL เพื่อจุดประสงค์ในการทดสอบ)

เซิร์ฟเวอร์ {

   #root /var/www/html/;
   #ดัชนี index.html index.htm;

   server_name testibot1.omnia.fi;
   #server_name 127.0.0.1
   ดัชนี index.php index.html index.htm index.nginx-debian.html;
   รูท /var/www/public_html/testibot1;

   ที่ตั้ง \ {

   proxy_pass http://testibot1.omnia.fi:444;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-ส่งต่อ-สำหรับ $remote_addr;
   proxy_set_header โฮสต์ $host;  
   # ฉันได้ลองพารามิเตอร์เหล่านี้ด้านล่างแล้ว แต่ไม่สำเร็จ
   #proxy_redirect ปิด;
   #proxy_set_header X-ส่งต่อโปรโต https;
   #proxy_set_header X-ส่งต่อโปรโต $scheme;  
   # ฉันเพิ่มพารามิเตอร์เหล่านี้หลังจากติดตั้ง SSL แล้ว แต่ไม่สำเร็จ
   proxy_http_version 1.1;
   proxy_set_header อัพเกรด $http_upgrade;
   proxy_set_header การเชื่อมต่อ "อัพเกรด";

   }

   access_log /var/log/nginx/testibot1.fi_access.log;
   error_log /var/log/nginx/testibot1.fi_error.log;


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

}

เซิร์ฟเวอร์ {

   #root /var/www/html/;
   #ดัชนี index.html index.htm;

   server_name testibotti2.omnia.fi;
   #server_name 127.0.0.1
   ดัชนี index.php index.html index.htm index.nginx-debian.html;
   ราก /var/www/public_html/testibotti2;

   ที่ตั้ง \ {

   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-ส่งต่อ-สำหรับ $remote_addr;
   proxy_set_header โฮสต์ $host;
   proxy_pass http://testibotti2.omnia.fi:444;
   }

   access_log /var/log/nginx/testibotti2.fi_access.log;
   error_log /var/log/nginx/testibotti2.fi_error.log;


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

}

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


   ฟัง 80;

   server_name testibot1.omnia.fi;
    กลับ 404; # จัดการโดย Certbot


}

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


# ฟัง 80;

# server_name testibotti2.omnia.fi;
# กลับ 404; # จัดการโดย Certbot


#}

การกำหนดค่าวิดเจ็ตเว็บแชท Botfront

<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/lib/index.min.js"></script>
    <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
Testisaitti 1
<div id="webchat"></div>
<script>
  WebChat.default.init({
    showFullScreenButton: true,
    selector: "#webchat",
    initPayload: "/tervetuloa",
    customData: {"language": "fi"}, // arbitrary custom data. Stay minimal as this will be added to the socket
    socketUrl: "http://testibot1.omnia.fi:5006",
    socketPath: "/socket.io/",
    embedded: false,
    title: "AsPa botti",
    subtitle: "Testibotti 1",
    inputTextFieldHint: "Vastaa kysymyksiin",
    profileAvatar:"robot_icon.png",
    params: {"storage": "session"} // can be set to "local"  or "session". details in storage section.
  })
</script>

</body>
</html>  


ข้อผิดพลาดนี้ฉันเห็นในหน้าต่างแก้ไขข้อบกพร่องของเบราว์เซอร์

เนื้อหาผสม: หน้าเว็บที่ '<URL>' ถูกโหลดผ่าน HTTPS แต่ขอจุดสิ้นสุด XMLHttpRequest ที่ไม่ปลอดภัย '<URL>' คำขอนี้ถูกบล็อก เนื้อหาต้องให้บริการผ่าน HTTPS

บันทึกข้อผิดพลาด Nginx

paulii@vetbot7:/var/www/public_html/testibot1$ sudo tail -f /var/log/nginx/testibot1.fi_error.log
[sudo] รหัสผ่านสำหรับ paulii:
10/10/2021 10:04:50 [ข้อผิดพลาด] 3469367#3469367: *60 open() "/var/www/public_html/testibot1/omnia.fi.db" ล้มเหลว (2: ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว), ไคลเอ็นต์ : 89.248.173.145, เซิร์ฟเวอร์: testibot1.omnia.fi, คำขอ: "GET /omnia.fi.db HTTP/1.1", โฮสต์: "testibot1.omnia.fi"
10/10/2021 10:04:50 [ข้อผิดพลาด] 3469367#3469367: *60 open() "/var/www/public_html/testibot1/omnia.fi.sqlite" ล้มเหลว (2: ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว), ไคลเอ็นต์ : 89.248.173.145, เซิร์ฟเวอร์: testibot1.omnia.fi, คำขอ: "GET /omnia.fi.sqlite HTTP/1.1", โฮสต์: "testibot1.omnia.fi"
10/10/2021 10:05:26 [ข้อผิดพลาด] 3469367#3469367: *66 open() "/var/www/public_html/testibot1/favicon.ico" ล้มเหลว (2: ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว), ไคลเอ็นต์: 91.153 .58.139, เซิร์ฟเวอร์: testibot1.omnia.fi, คำขอ: "GET /favicon.ico HTTP/1.1", โฮสต์: "testibot1.omnia.fi", ผู้อ้างอิง: "https://testibot1.omnia.fi/"
10/10/2021 10:05:52 [crit] 3469367#3469367: *81 SSL_do_handshake() ล้มเหลว (SSL: error:141CF06C:SSL Routines:tls_parse_ctos_key_share:การแชร์คีย์ไม่ถูกต้อง) ขณะจับมือ SSL ไคลเอ็นต์: 35.203.251.54 เซิร์ฟเวอร์ : 0.0.0.0:443
10/10/2021 10:05:54 [crit] 3469367#3469367: *90 SSL_do_handshake() ล้มเหลว (SSL: error:141CF06C:SSL Routines:tls_parse_ctos_key_share:bad key share) ขณะจับมือ SSL ไคลเอ็นต์: 107.178.200.215 เซิร์ฟเวอร์ : 0.0.0.0:443
10/10/2021 10:07:15 [crit] 3469367#3469367: *103 SSL_do_handshake() ล้มเหลว (SSL: error:141CF06C:SSL Routines:tls_parse_ctos_key_share:bad key share) ขณะจับมือ SSL, ไคลเอ็นต์: 107.178.237.2, เซิร์ฟเวอร์ : 0.0.0.0:443
10/10/2021 11:31:10 [ข้อผิดพลาด] 3470484#3470484: *2 open() "/var/www/public_html/testibot1/5007" ล้มเหลว (2: ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว), ไคลเอ็นต์: 91.153.58.139 เซิร์ฟเวอร์: testibot1.omnia.fi คำขอ: "GET /5007 HTTP/1.1" โฮสต์: "testibotti2.omnia.fi"
10/10/2021 11:31:12 [ข้อผิดพลาด] 3470484#3470484: *2 open() "/var/www/public_html/testibot1/5007" ล้มเหลว (2: ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว), ไคลเอนต์: 91.153.58.139 เซิร์ฟเวอร์: testibot1.omnia.fi คำขอ: "GET /5007 HTTP/1.1" โฮสต์: "testibotti2.omnia.fi"
10/10/2021 11:31:21 [ข้อผิดพลาด] 3470484#3470484: *2 open() "/var/www/public_html/testibot1/5007" ล้มเหลว (2: ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว), ไคลเอ็นต์: 91.153.58.139 เซิร์ฟเวอร์: testibot1.omnia.fi คำขอ: "GET /5007 HTTP/1.1" โฮสต์: "testibotti2.omnia.fi"
10/10/2021 11:32:21 [ข้อผิดพลาด] 3470484#3470484: *3 open() "/var/www/public_html/testibot1/favicon.ico" ล้มเหลว (2: ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว), ไคลเอ็นต์: 91.153 .58.139, เซิร์ฟเวอร์: testibot1.omnia.fi, คำขอ: "GET /favicon.ico HTTP/1.1", โฮสต์: "testibotti2.omnia.fi", ผู้อ้างอิง: "https://testibotti2.omnia.fi/"

Score:0
ธง ch

ฉันทำให้มันใช้งานได้

สิ่งนี้จำเป็นในไฟล์กำหนดค่าพร็อกซีย้อนกลับของ Ngingx

เซิร์ฟเวอร์ {


   server_name testibot1.omnia.fi;
   ดัชนี index.php index.html index.htm index.nginx-debian.html;
   รูท /var/www/public_html/testibot1;

   ที่ตั้ง / {

   proxy_pass http://testibot1.omnia.fi:444;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-ส่งต่อ-สำหรับ $remote_addr;
   proxy_set_header โฮสต์ $host;

   }

   ตำแหน่ง /socket.io/ {
   proxy_pass http://testibot1.omnia.fi:5006/socket.io/;
   proxy_http_version 1.1;
   proxy_set_header อัพเกรด $http_upgrade;
   proxy_set_header การเชื่อมต่อ 'อัปเกรด';
   proxy_set_header โฮสต์ $host;
   proxy_cache_bypass $http_upgrade;
   }  

และสิ่งนี้จำเป็นในหน้าเว็บ

socketUrl: "https://testibot1.omnia.fi",

ขอบคุณมาก ๆ อเล็กซานเดอร์ ทาราซอฟ! ความคิดของคุณนำฉันไปสู่เส้นทางที่ถูกต้อง และหลังจากพยายามหลายสิบครั้ง ฉันก็พบส่วนผสมที่ลงตัว

Score:0
ธง de

สาเหตุของปัญหาพิมพ์อยู่ในคอนโซลนักพัฒนาซอฟต์แวร์ของเบราว์เซอร์:

ข้อความแสดงข้อผิดพลาดโดยละเอียด

ดังนั้น คุณต้องทำให้คำขอ XHR เกิดขึ้นผ่านการเชื่อมต่อ HTTPS

คุณอาจต้องการเพิ่มตำแหน่งอื่นในการกำหนดค่า nginx:

ตำแหน่ง /socket.io {
   proxy_pass http://localhost:5006;
}

ในขณะที่เปลี่ยน URL ในการกำหนดค่าส่วนหน้าด้วย:

    socketUrl: "https://testibot1.omnia.fi",
ch flag
ขอบคุณ ฉันเพิ่มสิ่งนี้ในการกำหนดค่า Nginx ฉันคิดว่า "/" นี้ควรเป็น "\" เซิร์ฟเวอร์ { ตำแหน่ง \socket.io { proxy_pass http://localhost:5006; } } และนี่คือ index.html //socketUrl: "http://testibot1.omnia.fi:5006", socketUrl: "https://testibot1.omnia.fi", แต่ยังใช้งานไม่ได้ ข้อความแสดงข้อผิดพลาดนี้ในขณะนี้ รับ https://testibot1.omnia.fi/socket.io/?EIO=3&transport=polling&t=NoJZNCe 404 (ไม่พบ)
de flag
คุณโหลด nginx ใหม่หรือไม่ นอกจากนี้ การตรวจสุขภาพด้วย `nginx -t` มักจะสมเหตุสมผล
de flag
ถึงกระนั้น ฉันไม่แน่ใจว่าคุณควรใช้แบ็กสแลช (\) สำหรับตัวคั่นพาธ คุณควรใช้เครื่องหมายทับ (http://nginx.org/en/docs/beginners_guide.html) และโดยปกติจะใช้เครื่องหมายแบ็กสแลชเพื่อหลีกเลี่ยงอักขระพิเศษ
ch flag
paulii@vetbot7:/etc/nginx/sites-available$ sudo nginx -t nginx: ไฟล์การกำหนดค่า /etc/nginx/nginx.conf ไวยากรณ์ใช้ได้ nginx: การทดสอบไฟล์การกำหนดค่า /etc/nginx/nginx.conf สำเร็จ paulii@vetbot7:/etc/nginx/sites-available$ sudo systemctl โหลด nginx ใหม่ paulii@vetbot7:/etc/nginx/sites-available$ sudo systemctl รีสตาร์ท nginx paulii@vetbot7:/etc/nginx/sites-available$
ch flag
ฉันลองด้วย "/" และไม่ทำงาน นี่เป็นข้อผิดพลาดในขณะนี้ "ไม่สามารถโหลดทรัพยากร: เซิร์ฟเวอร์ตอบกลับด้วยสถานะ 404 (ไม่พบ)"
djdomi avatar
za flag
อย่าบอกว่ามันใช้งานไม่ได้ อัปเดตคำถามและแสดงการกำหนดค่าใหม่ให้เราดู ;)
ch flag
คุณหมายความว่าอะไร? มันไม่ทำงาน!

โพสต์คำตอบ

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