Стоит Youtrack, установлен через docker, доступ к YT осуществляется путем проксирования через nginx, но появилась необходимость добавить https. Ниже один из вариантов конфига для этого. Информация в основном взята отсюда.
Предварительно необходимо добавить директивы nginx в файл nginx.conf.
worker_rlimit_nofile 4096;
event {
worker_connections 2048;
}
Redirect http to https, конфиг в sites-available для example.com
server {
listen 80;
server_name example.com;
return 301 https://example.com$request_uri;
}
server {
#listen 443;
server_name example.com;
charset utf-8;
add_header Strict-Transport-Security max-age=31536000;
location / {
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 100m;
proxy_http_version 1.1;
proxy_pass http://localhost:8086;
}
location /api/eventSourceBus {
proxy_cache off;
proxy_buffering off;
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
proxy_set_header Connection '';
chunked_transfer_encoding off;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_pass http://localhost:8086;
}
listen 443 ssl http2; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
Сменить адрес по-умолчанию (внешний адрес) и слушающий порт (внутри докера)
sudo docker run --rm -it \ -v /var/www/go1/conf:/opt/youtrack/conf \ -v /var/www/go1/logs:/opt/youtrack/logs \ jetbrains/youtrack:2019.1.52584 configure \ --base-url=https://example.com --listen-port=8080
Как тут сделано:
youtrack слушает порт 8080 внутри docker, docker прокидывает порт на порт 8086 на сервере, соответственно nginx проксирует на 8086. В этом случае на https отвечает ТОЛЬКО nginx. Внутри докер ничего не меняется.
Код файла сервиса /etc/systemd/system/docker.youtrack.service
[Unit]
Description=YouTrack Service
After=docker.service
Requires=docker.service
[Service]
TimeoutStartSec=0
Restart=always
ExecStartPre=-/usr/bin/docker exec %n stop
ExecStartPre=-/usr/bin/docker rm %n
ExecStartPre=/usr/bin/docker pull jetbrains/youtrack:2019.1.52584
ExecStart=/usr/bin/docker run --rm --name %n \
-v /var/www/youtrack/data:/opt/youtrack/data \
-v /var/www/youtrack/conf:/opt/youtrack/conf \
-v /var/www/youtrack/logs:/opt/youtrack/logs \
-v /var/www/youtrack/backups:/opt/youtrack/backups \
-p 8086:8080 \
jetbrains/youtrack:2019.1.52584
[Install]
WantedBy=default.target