Стоит 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