【问题标题】:Nginx+uwsgi. Works fine on localhost, but not on remote machine. WHYNginx+uwsgi。在本地主机上工作正常,但在远程机器上不行。为什么
【发布时间】:2023-04-03 04:41:01
【问题描述】:

案例: 在 docker 网络中创建:

docker network create --attachable --subnet 1.1.1.0/29 some-network

第一个容器是 Flask+uwsgi,启动方式如下:

docker run -d --rm --net some-network --ip 1.1.1.4 \
-p 8080:8080 --name my-flask my-flask-image

uwsgi ini 看起来像:

[uwsgi]
module = app:app
master = true
processes = 2
socket = :8080

第二个容器是 nginx,启动方式如下:

docker run -d --rm --net some-network --ip 1.1.1.2 \
-p 80:80 --name my-nginx my-nginx-image

config 只添加下一个服务器配置

upstream app_dev {
    server  1.1.1.4:8080;
}
server {
    listen 80;
    server_name develop.localhost;

    location / {
        include uwsgi_params;
        uwsgi_pass app_dev;
    }
}

我运行容器并毫无问题地访问develop.localhost。

但是,当我使用域名在远程机器上运行容器时(肯定添加了 A 记录,我可以通过域名通过 ssh 访问服务器)我无法访问不是 nginx,不是 uwsgi:docker 日志显示没有请求。

我只能通过 ip 地址访问(从浏览器),但 nginx 会以 502 响应。 nginx 配置从添加了 domain_name 的本地 ssl 内容(和 ssl)略有变化

server {
    listen 80;
    listen 443 ssl;
    server_name develop.domainname.com;
    ssl_certificate /etc/nginx/ssl/CERTIFICATE.crt;
    ssl_certificate_key /etc/nginx/ssl/KEY.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
    
    location / {
        include uwsgi_params;
        uwsgi_pass app_dev;
    }
}

我不知道如何诊断问题 - 我不明白为什么日志是空的。

【问题讨论】:

    标签: docker nginx flask deployment uwsgi


    【解决方案1】:

    当我输入这个案例时,我意识到了问题。
    我没有为 nginx 暴露 443 端口。 我添加了端口来运行命令,它有点工作。

    -p 443:443
    

    “有点” - 因为在那之后 firefox 开始尖叫我的 ssl 证书不好。显然,godaddy 给了我www.domain.com 和 domain.com 的 ssl 证书,但没有给通配符域。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-19
      • 2015-08-28
      相关资源
      最近更新 更多