หมายเหตุ: ฉันถามคำถามนี้ก่อนหน้านี้ใน StackOverflow ไม่ได้รับคำตอบใดๆ
ใช่ คำถามนี้ถูกถามหลายครั้ง และใช่ ฉันได้ผ่านการแก้ปัญหาทั้งหมดแล้ว ยอมรับหรือไม่ แต่ยังคงประสบปัญหา
ฉัน สามารถเข้าถึงได้ เว็บไซต์ได้ที่ https://example.in แต่ Nginx ไม่ได้เปลี่ยนเส้นทาง http://example.in ถึง https://example.in
ฉันใช้ NGINX ภายในนักเทียบท่า
การกำหนดค่า Nginx คือ
เซิร์ฟเวอร์ {
ฟัง 80 default_server;
ฟัง [::]:80 default_server;
server_name example.in www.example.in;
ส่งคืน 301 https://$server_name$request_uri;
}
เซิร์ฟเวอร์ {
ฟัง 443 ssl;
server_name example.in www.example.in;
ssl_certificate /etc/nginx/certs/example.in.crt;
ssl_certificate_key /etc/nginx/certs/example.in.key;
ตำแหน่ง / คงที่ {
นามแฝง /vol/web/;
}
ที่ตั้ง / {
uwsgi_pass ${APP_HOST}:${APP_PORT};
รวม /etc/nginx/uwsgi_params;
client_max_body_size 10M;
}
}
Dockerfile สำหรับ Nginx คือ
จาก nginx:1.21.3
ผู้ดูแล LABEL="example.in"
สำเนา ./default.conf.tpl /etc/nginx/default.conf.tpl
สำเนา ./uwsgi_params /etc/nginx/uwsgi_params
สำเนา ./data/certs/example.in.crt /etc/nginx/certs/
สำเนา ./data/certs/example.in.key /etc/nginx/certs/
คัดลอก ./run.sh /run.sh
ENV LISTEN_PORT=8000
ENV APP_HOST=แอป
ENV APP_PORT=9000
RUN mkdir -p /vol/static && \
chmod 755 /vol/static && \
แตะ /etc/nginx/conf.d/default.conf && \
chown nginx:nginx /etc/nginx/conf.d/default.conf && \
chmod +x /run.sh && \
chmod +r /etc/nginx/certs/example.in.crt && \
chmod +r /etc/nginx/certs/example.in.key
VOLUME / ปริมาตร / คงที่
CMD ["/รัน.sh"]
นักเทียบท่า-compose.yml
รุ่น: '3.9'
บริการ:
แอป:
สร้าง:
บริบท: .
รีสตาร์ท: เสมอ
ปริมาณ:
- ข้อมูลคงที่:/vol/web
สิ่งแวดล้อม:
- ... (ตัวแปรสภาพแวดล้อมบางอย่าง)
พร็อกซี:
สร้าง:
บริบท: ./proxy
รีสตาร์ท: เสมอ
ขึ้นอยู่กับ:
- แอป
พอร์ต:
- "80:8000"
- "443:443"
ปริมาณ:
- ข้อมูลคงที่:/vol/web
- ./data/certs:/etc/nginx/certs
ปริมาณ:
ข้อมูลคงที่:
แอพที่กล่าวถึงในที่นี้คือเว็บแอพ Django ที่ให้บริการไฟล์คงที่ผ่าน Nginx
ฉันไม่เคยทำงานกับ Nginx มาก่อน
ข้อมูลเพิ่มเติมบางอย่างที่อาจเป็นประโยชน์สำหรับการดีบัก -
บันทึกคอนเทนเนอร์นักเทียบท่า <nginx-container-id>
ไม่แสดงบันทึกใด ๆ สำหรับการพยายามเข้าถึงบน http
- ตรวจสอบด้วยไฟร์วอลล์ linux และพอร์ต 80 สามารถเข้าถึงได้
PS: หลายวันก่อน ฉันประสบปัญหาอื่นกับการกำหนดค่า Nginx ซึ่งตรงกันข้ามกับสิ่งนี้ หากคุณต้องการการอ้างอิงถึงสิ่งนั้น โปรดดู คำถามนี้. ฉันสามารถหาทางออกได้ด้วยตนเองและแบ่งปันมันที่นั่น