Как сделать защищенный nginx-прокси для указания разных путей на одном сервере? - PullRequest
0 голосов
/ 16 января 2019

Я хочу использовать letsencrypt-nginx-proxy-companion в моем экземпляре Docker. После некоторого чтения я все еще не могу найти решение для моей схемы:

  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? Это хорошая идея, чтобы обернуть это таким образом?

1 Ответ

0 голосов
/ 16 января 2019

Вы пытались использовать тег "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/;
    }
}
...