【发布时间】:2022-01-20 04:15:48
【问题描述】:
我有一个从 HTTP 流量到 HTTPS 流量的有效重定向。该环境由 docker 容器中的烧瓶应用程序组成,该容器通过 NGINX docker 容器进行路由。下面是 nginx.conf 文件。运行docker-compose up 后,我可以激活容器。运行curl localhost 后,我得到了301 Moved Permanently。但是,在运行curl https://localhost 时,我得到了curl: (7) Failed to connect to localhost port 443: Connection refused。我检查了 macOS Big Sur 上的本地计算机网络设置,防火墙已关闭(应允许任何流量进入)。我不确定我还需要做什么才能使其正常工作。我还在 nginx 容器的 docker-compose 文件中公开了端口 443。任何建议都会有所帮助。
NGINX.conf
http {
upstream flask {
server app:8000;
}
server {
listen 80;
server_name localhost;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /etc/nginx/nginx/files/localhost.crt;
ssl_certificate_key /etc/nginx/nginx/files/localhost.key;
location / {
proxy_pass http://flask;
proxy_set_header Host "localhost";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
Docker 编写
version: "3"
services:
app:
container_name: app
command: gunicorn --bind 0.0.0.0:8000 --workers 2 "app.server:app"
volumes:
- ./:/var/www
build: app
ports:
- 8000:8000
networks:
MyNetwork:
aliases:
- flask
nginx:
container_name: nginx
build: nginx
volumes:
- ./:/var/www
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
ports:
- 80:80
expose:
- "443"
networks:
- MyNetwork
networks:
MyNetwork:
【问题讨论】:
-
请在 Nginx docker-compose 中添加 443:443 并再次检查端口:- 80:80 - 443:443
-
谢谢。这帮助我取得了进步,但现在在运行“curl -k localhost”时,我收到了来自服务器的空回复。
-
检查来自 Nginx 容器内 HTTP 和 HTTPS 的回复