注意:我以前在StackOverflow上问过这个问题,没有得到任何回应。
是的,这个问题已经被问了好几次了,是的,我已经经历了所有的解决方案,不管接受与否。但仍然面临着一个问题。
I can access https://example.in的网站,但Nginx没有将http://example.in重定向到https://example.in
我在码头里运行NGINX。
Nginx配置包括
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name example.in www.example.in;
return 301 https://$server_name$request_uri;
}
server {
listen 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;
location /static {
alias /vol/web/;
}
location / {
uwsgi_pass ${APP_HOST}:${APP_PORT};
include /etc/nginx/uwsgi_params;
client_max_body_size 10M;
}
}用于Nginx的Dockerfile是
FROM nginx:1.21.3
LABEL maintainer="example.in"
COPY ./default.conf.tpl /etc/nginx/default.conf.tpl
COPY ./uwsgi_params /etc/nginx/uwsgi_params
COPY ./data/certs/example.in.crt /etc/nginx/certs/
COPY ./data/certs/example.in.key /etc/nginx/certs/
COPY ./run.sh /run.sh
ENV LISTEN_PORT=8000
ENV APP_HOST=app
ENV APP_PORT=9000
RUN mkdir -p /vol/static && \
chmod 755 /vol/static && \
touch /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
version: '3.9'
services:
app:
build:
context: .
restart: always
volumes:
- static-data:/vol/web
environment:
- ... (some environment variables)
proxy:
build:
context: ./proxy
restart: always
depends_on:
- app
ports:
- "80:8000"
- "443:443"
volumes:
- static-data:/vol/web
- ./data/certs:/etc/nginx/certs
volumes:
static-data:这里提到的应用程序是一个Django web应用程序,通过Nginx为静态文件提供服务。
我以前从没和Nginx合作过。
一些可能对调试有用的更多信息-
docker container logs 没有显示任何试图在http上访问的日志。PS:几年前,我正面临着Nginx配置的另一个问题,这与此正好相反。如果您需要一些参考,请参阅这个问题。我想我可以自己找到解决方案,并在那里自己分享。
发布于 2021-10-20 06:34:02
您正在将端口80映射到您的docker中的端口8000 -Compose.yml。你的要求永远达不到。
ports:
- "80:80"
- "443:443"https://serverfault.com/questions/1081092
复制相似问题