Youtrack за nginx

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

 

Leave a comment

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.