Как сделать защищенный nginx-прокси для указания разных путей на одном сервере?
Я хочу использовать 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
Предполагая, что я знаю, как управлять несколькими поддоменами (каждый для контейнера), мне не хватает, как (и где) указать / путь для проектов.
С чего начать, если я хочу направить весь трафик через SSL (исключая скрипт для обновления сертификата) и управлять проектами с Jenkins? Это хорошая идея, чтобы обернуть это таким образом?
1 ответ
Вы пытались использовать тег "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/;
}
}