首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >nginx-代理/nginx- SSL代理

nginx-代理/nginx- SSL代理
EN

Stack Overflow用户
提问于 2021-12-28 15:12:24
回答 1查看 1.6K关注 0票数 0

我对所有这些反向代理都很陌生,我希望通过使用这个非常流行的码头容器:https://github.com/nginx-proxy/nginx-proxy来了解它是如何工作的。

我正在尝试使用nginx代理设置几个docker实例。如果没有https,域是可以访问的,但出于某种原因,SSL似乎无法工作。你可以试试:

http://foundry.hahn-webdesign.de/ => works https://foundry.hahn-webdesign.de/ => 500 -内部服务器错误

这是我的例子项目,我无法工作。

码头工人撰写文件:

代码语言:javascript
运行
复制
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)登录:

代码语言:javascript
运行
复制
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" "-"
EN

回答 1

Stack Overflow用户

发布于 2021-12-29 11:37:31

我找到了原因:

代码语言:javascript
运行
复制
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代理调用证书。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70508950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档