ไฟล์ nginx.conf ของฉันเป็นดังนี้:
ผู้ใช้ www-data;
worker_processes อัตโนมัติ
pid /run/nginx.pid;
รวม /etc/nginx/modules-enabled/*.conf;
#the ด้านบนรวมถึงนำในไฟล์เริ่มต้นต่อไปนี้:
#50-mod-http-image-filter.conf
#50-mod-http-xslt-filter.conf
#50-mod-mail.conf
#50-mod-stream.conf
เหตุการณ์ {
worker_connections 500;
}
http {
รวม /etc/nginx/proxy.conf;
limit_req_zone $binary_remote_addr zone=หนึ่ง:10m อัตรา=100r/m;
ปิด server_tokens;
ส่งไฟล์บน;
keepalive_timeout 30;
client_body_timeout 10; client_header_timeout 10; send_timeout 10;
ต้นน้ำ myapp{
เซิร์ฟเวอร์ 127.0.0.1:5000;
}
เซิร์ฟเวอร์ {
ฟัง 443 ssl http2;
ฟัง [::]:443 ssl http2;
server_name myapi.com;
ssl_certificate /etc/letsencrypt/live/myapi.com/fullchain.pem; # จัดการโดย Certbot
ssl_certificate_key /etc/letsencrypt/live/myapi.com/privkey.pem; # จัดการโดย Certbot
รวม /etc/letsencrypt/options-ssl-nginx.conf; # จัดการโดย Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # จัดการโดย Certbot
add_header X-Frame-ตัวเลือกปฏิเสธ;
add_header X-Content-Type-Options nosniff;
#เปลี่ยนเส้นทางการรับส่งข้อมูลทั้งหมด
ที่ตั้ง / {
proxy_pass http://myapi;
โซน limit_req=ระเบิดหนึ่งครั้ง=10;
}
}
}
ฉันติดตั้ง ใบรับรอง และ certbot-nginx (อูบุนตู).
SSL ทำงานได้ดี ไฟร์วอลล์อนุญาตเฉพาะพอร์ต 443
ฉันกำลังพยายามต่ออายุใบรับรอง cerbot ด้วยคำสั่ง: sudo certbot ต่ออายุ --dry-run
ขั้นตอนนี้พยายามยืนยันว่าฉันเป็นเจ้าของโดเมนโดยการส่งคำขอไปยัง http://myapi.com/.well-known/acme-challenge/2d8dvxv8x9dvxd9v (หมายเหตุ: ฉันทำให้ค่าคีย์สับสน 2d8dvxv8x9dvxd9v เนื่องจากเป็นสิ่งที่เป็นส่วนตัว)
แต่หมดเวลานี้แล้ว ดังนั้นฉันจึงเปิดใช้งานพอร์ต 80 และเพิ่มรายการเซิร์ฟเวอร์เพิ่มเติมต่อไปนี้:
เซิร์ฟเวอร์ {
ฟัง 80;
server_name myapi.com;
ส่งคืน 301 https://$host$request_uri;
}
ตอนนี้คำสั่งต่ออายุ certbot (sudo certbot ต่ออายุ --dry-run
) สามารถต่ออายุใบรับรองได้ น่าแปลก แม้ว่าฉันจะลบการบล็อกเซิร์ฟเวอร์นี้ออก การต่ออายุ certbot ก็ทำงานได้ดี
เส้นทาง .well-known/acme-challenge อยู่ที่ไหน มีการสร้าง/ลบทันทีหรือไม่
เมื่อฉันลบบล็อกเซิร์ฟเวอร์สำหรับพอร์ต 80 แล้ว nginx จะสามารถต่ออายุใบรับรองได้อย่างไร (เนื่องจากต้องใช้พอร์ต 80 สำหรับการทดสอบ certbot)