【发布时间】:2023-04-09 09:38:01
【问题描述】:
环境: ubuntu docker 和容器(未预审,端口 = 6000->8080),烧瓶(serve.py),gunicorn,nginx。服务器ip:123.456.789.101
我希望其他人可以访问运行在 docker 容器中的 web(123.456.789.101:6000),并访问静态图像(123.456.789.101:6000/static/1.jpg)。
当我只使用flask和gunicorn,并运行guincorn -w 2 -b 0.0.0.0:8080 serve:app时,我可以成功访问网络(123.456.789.101:6000)。
但是如果我使用 nginx 代理,它会失败。 具体如下:
首先,$ gunicorn -w 2 -b 127.0.0.1:8080 serve:app,成功,我可以在容器系统中 curl 了。
其次,$service nginx start,然后在 site-enables 中加载 conf 文件。
nginx 配置细节:
server {
listen 6000;
server_name 123.456.789.101;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /static/ {
root /www;
expires 30d;
}
}
最后,失败了。我无法访问网络(123.456.789.101:6000)。
为了找出错误,我尝试运行gunicorn -w 2 -b 127.0.0.1:8080 serve:app,并更改 nginx conf 文件
server {
listen 80;
server_name 127.0.0.1;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /static/ {
root /www;
expires 30d;
}
}
和curl 127.0.0.1 在容器系统中。它成功了。说明nginx可以工作,可以把80映射到8080。
那么,出了什么问题,我该如何解决。谢谢。
【问题讨论】:
-
你运行 docker 的命令是什么?你在外面暴露端口吗?
-
我没有权限运行 docker。 (这意味着服务器由某人收费,但我可以提出请求。)
标签: docker nginx flask gunicorn