我对所有这些反向代理都很陌生,我希望通过使用这个非常流行的码头容器:https://github.com/nginx-proxy/nginx-proxy来了解它是如何工作的。
我正在尝试使用nginx代理设置几个docker实例。如果没有https,域是可以访问的,但出于某种原因,SSL似乎无法工作。你可以试试:
http://foundry.hahn-webdesign.de/ => works https://foundry.hahn-webdesign.de/ => 500 -内部服务器错误
这是我的例子项目,我无法工作。
码头工人撰写文件:
version: "3.8"
services:
nginx-proxy:
image: nginxproxy/nginx-proxy
container_name: nginx-proxy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx-proxy/certs:/etc/nginx/certs/:ro
- ./nginx-proxy/vhost:/etc/nginx/vhost.d/
- ./nginx-proxy/html:/usr/share/nginx/html/
- /var/run/docker.sock:/tmp/docker.sock:ro
- dhparam:/etc/nginx/dhparam
acme-companion:
image: nginxproxy/acme-companion
container_name: acme-companion
restart: unless-stopped
volumes:
- ./nginx-proxy/html:/usr/share/nginx/html/
- ./nginx-proxy/vhost:/etc/nginx/vhost.d/
- ./nginx-proxy/certs:/etc/nginx/certs/:rw
- ./nginx-proxy/acme:/etc/acme.sh
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
- DEFAULT_EMAIL=admin@hahn-webdesign.de
- NGINX_PROXY_CONTAINER=nginx-proxy
whoami:
image: jwilder/whoami
container_name: foundry
restart: unless-stopped
hostname: foundry
domainname: hahn-webdesign.de
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./nginx-proxy/certs:/etc/nginx/certs
expose:
- "8000"
environment:
- VIRTUAL_HOST=foundry.hahn-webdesign.de
- VIRTUAL_PORT=8000当涉及到SSL示例时,我发现文档缺乏很多输入。也许是因为我不知道nginx反向代理在它的基础上是如何工作的。
目录都正常工作,并且是可访问的。证书是有效的,并由acme同伴创建.
请有人告诉我,在这种配置中,要使SSL工作,我必须做些什么?
访问两个协议时,从码头容器(http -> https)登录:
nginx.1 | foundry.hahn-webdesign.de 95.90.215.63 - - [29/Dec/2021:11:25:43 +0000] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0" "172.22.0.6:8000",
nginx.1 | foundry.hahn-webdesign.de 95.90.215.63 - - [29/Dec/2021:11:25:48 +0000] "GET / HTTP/2.0" 500 177 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0" "-"发布于 2021-12-29 11:37:31
我找到了原因:
version: "3.8"
services:
whoami:
image: jwilder/whoami
container_name: foundry
restart: unless-stopped
hostname: foundry
domainname: hahn-webdesign.de
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./nginx-proxy/certs:/etc/nginx/certs
expose:
- "8000"
environment:
- VIRTUAL_HOST=foundry.hahn-webdesign.de
- VIRTUAL_PORT=8000
- LETSENCRYPT_HOST=foundry.hahn-webdesign.de现有证书是不够的。如果您创建了一个有效的证书,但是删除了创建证书的容器,则符号链接将消失。因此,如果您使用像文档中建议的那样的虚拟容器,它将导致这种行为。
添加LETSENCRYPT_HOST将再次添加符号链接。因此,如果容器是可访问的,您甚至不必使用假人。
如果需要,这个Environment变量实际上会告诉nginx代理调用证书。
https://stackoverflow.com/questions/70508950
复制相似问题