我使用 Flask , gunicorn , NGINX 和 Docker 设置了docker项目,如果我没有在Flask的setting.py。
中添加 SERVER_NAME当前配置为:
gunicorn
gunicorn -b 0.0.0.0:5000
搬运工-compose.yml
services:
application:
#restart: always
build: .
expose:
- "5000"
ports:
- "5000:5000"
volumes:
- .:/code
links:
- db
nginx:
restart: always
build: ./nginx
links:
- application
expose:
- 8080
ports:
- "8880:8080"
NGINX .conf
server {
listen 8080;
server_name application;
charset utf-8;
location / {
proxy_pass http://application:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
然后我在Flask的setting.py
中设置 SERVER_NAMESERVER_NAME = '0.0.0.0:5000'
当我将url 0.0.0.0:8880 输入浏览器时,我会从nginx获得404响应。在Flask的setting.py?
中应该正确 SERVER_NAME提前致谢。
答案 0 :(得分:1)
最后找到解决方案, 我必须使用 proxy_set_header
的特定端口proxy_set_header Host $host:5000;
答案 1 :(得分:0)
为SERVER_NAME设置IP没有意义。 SERVER_NAME会将请求重定向到该主机名,这对于设置子域以及支持使用应用程序上下文生成URL非常有用(例如,假设您有一个后台线程,需要生成URL但没有请求上下文)。
SERVER_NAME应与您部署应用程序的域匹配。