gpt4 book ai didi

docker - 适用于域的Docker SSL

转载 作者:行者123 更新时间:2023-12-02 20:11:36 24 4
gpt4 key购买 nike

我正在尝试使用域为Docker运行SSL。我正在为我的项目使用以下docker-compose.yml:

web:
build: /Users/marcin/docker/definitions/php-nginx/php-7.1-ubuntu
volumes:
- /c/Users/marcin/docker/projects/newdocker.app/html/:/usr/share/nginx/html/
- /c/Users/marcin/docker/projects/newdocker.app/nginx/conf.d/:/etc/nginx/conf.d/
- /c/Users/marcin/docker/projects/newdocker.app/nginx/log/:/var/log/nginx/
- /c/Users/marcin/docker/projects/newdocker.app/php/config/:/usr/local/etc/php/
- /c/Users/marcin/docker/projects/newdocker.app/supervisor/conf.d/:/etc/supervisor/conf.d/
- /c/Users/marcin/docker/projects/newdocker.app/supervisor/log/:/var/log/supervisor/
- /c/Users/marcin/docker/local_share/:/root/.local_share/
working_dir: /usr/share/nginx/html/
links:
- db
container_name: newdocker.php
hostname: newdocker.app
ports:
- "280:22"
- "8300:80"
- "18300:443"
environment:
- VIRTUAL_HOST=newdocker.app
- VIRTUAL_PORT=443
- VIRTUAL_PROTO=https
db:
build: /Users/marcin/docker/definitions/mysql/5.7
environment:
- MYSQL_ROOT_PASSWORD=pass
- MYSQL_DATABASE=
- MYSQL_USER=
- MYSQL_PASSWORD=
expose:
- 3306
volumes:
- /c/Users/marcin/docker/projects/newdocker.app/mysql/data/:/var/lib/mysql/
- /c/Users/marcin/docker/projects/newdocker.app/mysql/conf.d/:/etc/mysql/conf.d/source
- /c/Users/marcin/docker/projects/newdocker.app/mysql/log/:/var/log/mysql/
ports:
- "33200:3306"
container_name: newdocker.db
hostname: newdocker.app

并且我还将 jwilder/nginx-proxy与以下 docker-compose.yml文件一起使用:
proxy:
image: jwilder/nginx-proxy
restart: always
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- ./nginx/conf.d/proxy.conf:/etc/nginx/conf.d/proxy.conf:ro
- ./certs/default.crt:/etc/nginx/certs/default.crt:ro
- ./certs/default.key:/etc/nginx/certs/default.key:ro
ports:
- "80:80"
- "443:443"
container_name: proxy

问题是这样的:
http://192.168.99.100:8300/ - is working fine
https://192.168.99.100:18300/ - is working fine
https://192.168.99.100/ - I'm getting 503 (this is probably fine - this port is not used for this container)
http://newdocker.app/ - is working fine
https://newdocker.app:18300/ - is working fine
https://newdocker.app/ - I'm getting 500

我的nginx配置文件如下所示:
server {
listen 80;
listen 443 default ssl;
server_name localhost;

ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;

# set maximum request size to 20M
client_max_body_size 20M;

root /usr/share/nginx/html/public/;

location / {
root /usr/share/nginx/html/public/;
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$args;
}

sendfile off;

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html/public/;
}


location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_param SERVER_NAME $host;
}
}

我如何设置它以使其与 https://newdocker.app/一起使用,从而没有端口?

最佳答案

经过调查,我的nginx配置文件很好,但是我不得不像这样更新docker-composer.yaml:

web:
build: /Users/marcin/docker/definitions/php-nginx/php-7.1-ubuntu
volumes:
- /c/Users/marcin/docker/projects/newdocker.app/html/:/usr/share/nginx/html/
- /c/Users/marcin/docker/projects/newdocker.app/nginx/conf.d/:/etc/nginx/conf.d/
- /c/Users/marcin/docker/projects/newdocker.app/nginx/log/:/var/log/nginx/
- /c/Users/marcin/docker/projects/newdocker.app/php/config/:/usr/local/etc/php/
- /c/Users/marcin/docker/projects/newdocker.app/supervisor/conf.d/:/etc/supervisor/conf.d/
- /c/Users/marcin/docker/projects/newdocker.app/supervisor/log/:/var/log/supervisor/
- /c/Users/marcin/docker/local_share/:/root/.local_share/
working_dir: /usr/share/nginx/html/
links:
- db
container_name: newdocker.php
hostname: newdocker.app
ports:
- "280:22"
- "8300:80"
- "18300:443"
environment:
- VIRTUAL_HOST=newdocker.app
- CERT_NAME=default
- HTTPS_METHOD=noredirect

db:
build: /Users/marcin/docker/definitions/mysql/5.7
environment:
- MYSQL_ROOT_PASSWORD=pass
- MYSQL_DATABASE=
- MYSQL_USER=
- MYSQL_PASSWORD=
expose:
- 3306
volumes:
- /c/Users/marcin/docker/projects/newdocker.app/mysql/data/:/var/lib/mysql/
- /c/Users/marcin/docker/projects/newdocker.app/mysql/conf.d/:/etc/mysql/conf.d/source
- /c/Users/marcin/docker/projects/newdocker.app/mysql/log/:/var/log/mysql/
ports:
- "33200:3306"
container_name: newdocker.db
hostname: newdocker.app

最重要的是在此处添加 - CERT_NAME=default以使其正常工作(我在jwilder / nginx-proxy中共享的证书具有名称default.crt和default.key,如您在第二个docker-compose.yaml中所看到的那样),因为我想要要同时使用HTTP和https,我也必须添加 - HTTPS_METHOD=noredirect

现在重新启动nginx之后,我可以使用 https://newdocker.app而不添加任何端口,并且 http://newdocker.app也可以工作。

关于docker - 适用于域的Docker SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46491571/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com