Score:0

เซิร์ฟเวอร์ปฏิเสธที่จะเชื่อมต่อหลังจากติดตั้ง SSL ผ่าน Certbot | นักเทียบท่า + Nginx, AWS Lightsail

ธง it

ฉันสามารถติดตั้ง SSL ผ่าน certbot ลงในคอนเทนเนอร์ Nginx Docker ของฉันได้สำเร็จ แต่หลังจากติดตั้งแล้ว การจราจรทั้งหมดก็เคลื่อนผ่าน HTTPS ปฏิเสธที่จะเชื่อมต่อ

ขด https://www.example.com หรือ ขด https://the_ip_of_server

curl: (7) ล้มเหลวในการเชื่อมต่อกับ example.com พอร์ต 443 หลังจาก 9822 ms: การเชื่อมต่อถูกปฏิเสธ

~พอร์ต 443 เปิดอยู่บนเซิร์ฟเวอร์ (AWS Lisghtsai)

ขด http://www.example.com

<html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.21.6</center>
</body>
</html>

แต่เมื่อ ขด http://the_ip_of_server

<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.21.6</center>
</body>
</html>


ที่นี่คือ nginx.conf

#จำกัดการทำงานพร้อมกัน
limit_conn_zone $binary_remote_addr โซน=per_ip:10m;

เซิร์ฟเวอร์ {
server_name example.com www.example.com;

ที่ตั้ง / {
    proxy_pass http://ขวด:8080/;
    proxy_set_header X-ส่งต่อ-สำหรับ $proxy_add_x_forwarded_for;
    proxy_set_header โฮสต์ $host;
    ปิด proxy_redirect;
    เปิด proxy_intercept_errors;

    limit_conn per_ip 12;
}

error_page 404 /notfound.html;
ตำแหน่ง /notfound.html {
    รูท /var/www/html;
    ภายใน;
}

error_page 500 502 503 504 /maintenance.html;
ตำแหน่ง /maintenance.html {
    รูท /var/www/html;
    ภายใน;
}

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

}


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


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


ฟัง 80 default_server;
server_name example.com www.example.com;
กลับ 404; # จัดการโดย Certbot

}

นักเทียบท่า-compose.yml

รุ่น: '3.7'

บริการ:

กระติกน้ำ:
  สร้าง: ./Flask App
  container_name: กระติกน้ำ
  รีสตาร์ท: เสมอ
  สิ่งแวดล้อม:
    - APP_NAME=Env
  เปิดเผย:
    - 8080

จิงซ์:
  สร้าง: ./Nginx
  ชื่อคอนเทนเนอร์: nginx
  รีสตาร์ท: เสมอ
  พอร์ต:
    - "80:80"
Martin avatar
kz flag
โปรดให้ข้อมูลเพิ่มเติม... คุณมี nginx ทำงานนอก docker เป็น reverse proxy ส่งต่อทราฟฟิกไปยังคอนเทนเนอร์ docker ของคุณใช่ไหม คุณได้ลองเชื่อมต่อกับ ```http://flask:8080/``` จากเครื่อง nginx ที่กำลังทำงานอยู่หรือไม่? มีอะไรน่าสนใจในบันทึกของ nginx หรือไม่ บางทีคอนเทนเนอร์นักเทียบท่าอาจออก / ขัดข้อง คุณตรวจสอบแล้วหรือยัง
Pranav avatar
it flag
Nginx กำลังทำงานบนคอนเทนเนอร์นักเทียบท่าแยกต่างหากในขณะที่ขวดทำงานบนอีกคอนเทนเนอร์หนึ่ง ฉันลอง `curl http://flask:8080/` จากคอนเทนเนอร์ Nginx และผลลัพธ์ก็ใช้ได้ และคอนเทนเนอร์นักเทียบท่าทั้งสองทำงานได้ดี (ไม่ขัดข้อง) บนเครือข่ายนักเทียบท่า
Martin avatar
kz flag
โอเค คุณคิดจะเผยแพร่พอร์ต 443 ของคอนเทนเนอร์ nginx ไปยังโฮสต์หรือไม่
Pranav avatar
it flag
อืม พอร์ต 80 ของคอนเทนเนอร์ได้รับการเผยแพร่ไปยังพอร์ต 80 ของโฮสต์แล้ว ฉันไม่แน่ใจว่าควรกำหนดพอร์ตใดของโฮสต์ให้กับพอร์ต 443 ของคอนเทนเนอร์! ฉันจะอัปเดตคำถามด้วยไฟล์ `docker-compose` ของฉัน
Martin avatar
kz flag
พอร์ต 443 ใช้สำหรับทราฟฟิก https ส่วนพอร์ต 80 ใช้สำหรับทราฟฟิก http ที่ไม่ได้เข้ารหัสเท่านั้น เพิ่มบรรทัดในไฟล์เขียนของคุณคล้ายกับพอร์ต 80 ที่เผยแพร่: พอร์ต 443 ของคอนเทนเนอร์ nginx จะต้องเผยแพร่ไปยังพอร์ต 443 ของระบบโฮสต์ของคุณ
Pranav avatar
it flag
ไม่! ถึงกระนั้นการเชื่อมต่อก็ปฏิเสธ :( แต่ `http://` ทำงานได้ดีโดยไม่ต้องใช้ SSL ofc
Pranav avatar
it flag
อุ๊ย ขอโทษเพื่อน! มันเป็นความผิดของฉันเองที่ฉันสร้าง 'docker-compose' ขึ้นมาใหม่ ในที่สุดมันก็ลงเอยด้วยการสร้าง 'nginx.conf' ขึ้นมาใหม่ ดังนั้นฉันจึงติดตั้ง 'certbot' อีกครั้งและตอนนี้ทุกอย่างเรียบร้อยดี! :)
Pranav avatar
it flag
ให้เรา [ดำเนินการสนทนาต่อในแชท](https://chat.stackexchange.com/rooms/136213/discussion-between-pranav-and-martin)
Score:0
ธง it

เพื่อเป็นแนวทาง https ฉันควรจะเผยแพร่พอร์ต 443 ของคอนเทนเนอร์ไปยังพอร์ต 443 ของโฮสต์ (เซิร์ฟเวอร์)

การเพิ่ม - "443:443" ไปยังส่วน nginx ของไฟล์ docker-compose ควรแก้ปัญหานี้

โพสต์คำตอบ

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