NOTĂ: Am pus această întrebare anterior pe StackOverflow, nu am primit niciun răspuns.
Da, această întrebare a fost pusă de mai multe ori și da, am trecut prin toate soluțiile, acceptate sau nu. Dar încă se confruntă cu o problemă.
eu poate accesa site-ul la adresa https://example.in dar Nginx nu redirecționează http://example.in la https://example.in
Rulez NGINX în docker.
Configurațiile Nginx sunt
Server {
asculta 80 default_server;
asculta [::]:80 default_server;
server_name example.in www.example.in;
returnează 301 https://$server_name$request_uri;
}
Server {
asculta 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;
locație /static {
alias /vol/web/;
}
Locație / {
uwsgi_pass ${APP_HOST}:${APP_PORT};
includ /etc/nginx/uwsgi_params;
client_max_body_size 10M;
}
}
Dockerfile pentru Nginx este
DE LA nginx:1.21.3
LABEL keeper="example.in"
COPIEAZĂ ./default.conf.tpl /etc/nginx/default.conf.tpl
COPIEAZĂ ./uwsgi_params /etc/nginx/uwsgi_params
COPY ./data/certs/example.in.crt /etc/nginx/certs/
COPY ./data/certs/example.in.key /etc/nginx/certs/
COPIEAZĂ ./run.sh /run.sh
ENV LISTEN_PORT=8000
ENV APP_HOST=aplicație
ENV APP_PORT=9000
RUN mkdir -p /vol/static && \
chmod 755 /vol/static && \
atingeți /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 /vol/static
CMD ["/run.sh"]
docker-compose.yml
versiunea: „3.9”
Servicii:
aplicatie:
construi:
context: .
reporniți: întotdeauna
volume:
- static-data:/vol/web
mediu inconjurator:
- ... (unele variabile de mediu)
proxy:
construi:
context: ./proxy
reporniți: întotdeauna
depinde de:
- aplicație
porturi:
- „80:8000”
- „443:443”
volume:
- static-data:/vol/web
- ./data/certs:/etc/nginx/certs
volume:
date-statice:
Aplicația menționată aici este o aplicație web Django care deservește fișierele statice prin Nginx.
Nu am mai lucrat niciodată cu Nginx înainte de asta.
Mai multe informații care pot fi utile pentru depanare -
jurnalele containerului docker <nginx-container-id>
nu afișa niciun jurnal pentru că încearcă să acceseze pe http.
- Verificat cu firewall linux, iar portul 80 este accesibil.
PS: Cu câteva zile în urmă, m-am confruntat cu o altă problemă cu configurația Nginx, care era exact opusul acesteia. Dacă aveți nevoie de vreo referire la asta, vă rugăm să vedeți această întrebare. Am fost însă capabil să găsesc singur o soluție și am împărtășit-o acolo.