docker - 如何使安全的 nginx-proxy 指向单个服务器中的不同路径?

标签 docker ssl docker-compose nginx-reverse-proxy

我想在我的 Docker 实例中使用 letsencrypt-nginx-proxy-companion。 经过一些阅读后,我仍然找不到适合我的架构的解决方案:

  HOST => DOCKER
   /        |
 (vps)      |
        (containers)
            - nginx-proxy
            - letsencrypt-nginx-proxy-companion

            - portainer [to manage self-hosted docker]
                https://projects.domain.com:4488
            - jenkins [to manage projects from github]
                https://projects.domain.com:5533

            - projects home [static website]
                https://projects.domain.com
            - project #1
                https://projects.domain.com/project-1
            - project #2
                https://projects.domain.com/project-2

假设我知道如何管理多个子域(每个用于容器),我想念如何(以及在​​何处)为项目指定/path

如果我想通过 SSL 路由所有流量(不包括用于证书更新的脚本)并使用 Jenkins 管理项目,从哪里开始?以这种方式包装它是个好主意吗?

最佳答案

您是否尝试过将“location/”标签与 proxy_pass 和子过滤器一起使用? 例如:

server {
    server_name jenkins.domain.com;
    listen 80 ;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name jenkins.domain.com;

    ssl on;
    ssl_certificate /etc/nginx/ssl/sslcertificate.crt
    ssl_certificate_key /etc/nginx/sslkey.key;


    proxy_set_header Accept-Encoding “”;
    sub_filter_types ‘text/html’;
    sub_filter_types ‘text/css’;
    sub_filter ‘http://jenkins.domain.com‘ ‘https://$host';
    sub_filter_once off;

server {
    server_name projects.domain.com;
    listen 80 ;
    return 301 https://$host$request_uri;
}

location /project-1/{
proxy_pass http://jenkins.domain.com:4488/project-1/;
    }
}

关于docker - 如何使安全的 nginx-proxy 指向单个服务器中的不同路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54219120/

相关文章:

php - Docker 与 amazonlinux

java - 使用 Java API 连接到 Smartsheet 时出错

ssl - 无法将文件上传到远程 ftps 服务器

当我使用构建命令时,Docker compose 会忽略我的 Dockerfile

macos - 需要将 docker 从一台 mac 移动到另一台 mac

docker - Fiware cygnus Docker构建失败

docker - 如何在Rabbitmq中创建队列

amazon-web-services - 如何解决 cloudflare CNAME 记录上的 521 错误

python - 以普通用户身份运行时,docker-compose 给出错误 "ImportError: No module named ssl_match_hostname"

使用 `docker-compose run` 与 `docker-compose exec` 调用的 Mysql 客户端