首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nginx http不重定向到https

Nginx http不重定向到https
EN

Server Fault用户
提问于 2021-10-20 06:06:40
回答 1查看 1.6K关注 0票数 1

注意:我以前在StackOverflow上问过这个问题,没有得到任何回应。

是的,这个问题已经被问了好几次了,是的,我已经经历了所有的解决方案,不管接受与否。但仍然面临着一个问题。

I can access https://example.in的网站,但Nginx没有将http://example.in重定向到https://example.in

我在码头里运行NGINX。

Nginx配置包括

代码语言:javascript
复制
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是

代码语言:javascript
复制
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

代码语言:javascript
复制
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合作过。

一些可能对调试有用的更多信息-

  1. docker container logs 没有显示任何试图在http上访问的日志。
  2. 使用linux防火墙进行检查,端口80是可访问的。

PS:几年前,我正面临着Nginx配置的另一个问题,这与此正好相反。如果您需要一些参考,请参阅这个问题。我想我可以自己找到解决方案,并在那里自己分享。

EN

回答 1

Server Fault用户

回答已采纳

发布于 2021-10-20 06:34:02

您正在将端口80映射到您的docker中的端口8000 -Compose.yml。你的要求永远达不到。

代码语言:javascript
复制
ports:
  - "80:80"
  - "443:443"
票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1081092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档