案例:在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,没有任何问题。
然而,当我在带有domain_name的远程机器上运行容器时(当然添加了A记录,我可以通过ssh by domain_name访问服务器),我不能访问nginx,也不能访问uwsgi:docker日志显示没有请求。
我只能通过ip地址访问(从浏览器),但nginx用502响应。nginx-config与添加了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;
}
}
我不知道如何诊断问题——我不明白为什么日志是空的。
当我输入这个案例时,我意识到了问题
我没有为nginx公开443端口。我添加了端口来运行命令,它有点工作。
-p 443:443
"有点"-因为在那之后,firefox开始尖叫我的ssl证书不好。显然,godaddy给了我www.domain.com和domain.com的ssl证书,但没有给通配符域。