Назад | Перейти на главную страницу

Настройте GitLab за nginx с https и отвечайте на другой порт

Уважаемое сообщество serverfault,

Недавно я установил GitLab в комплекте на свой VPS под управлением Ubuntu14.04. Чтобы запустить его, я использовал nginx, который направляет один конкретный поддомен в GitLab через http. Пока все хорошо, работает нормально и не конфликтует с другими установленными сервисами, например Taiga.io.

Поскольку не использовать https - очень плохая идея, я решил изменить это - я использовал Let's Encrypt для получения сертификатов для своих доменов и поддоменов, а затем настроил его соответствующим образом. Taiga.io прошел нормально без каких-либо проблем, а затем я перешел на GitLab.

К сожалению, при попытке настроить https на GitLab у меня 502 Bad Gateway nginx/1.4.6 (Ubuntu) ошибка.

Вот моя установка:

/etc/gitlab/gitlab.rb:
external_url 'https://gitlab.example.com:8090'
nginx['enable'] = false

/opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml:
host: gitlab.example.com
port: 8090
https: true

/etc/ngingx/sites-enabled/gitlab:
server {
    listen 80;
    server_name gitlab.example.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name gitlab.example.com;

    large_client_header_buffers 4 32k;
    client_max_body_size 50M;
    charset utf-8;

    access_log /opt/gitlab/logs/nginx.access.log;
    error_log /opt/gitlab/logs/nginx.error.log;

    location / {
        proxy_pass http://127.0.0.1:8090;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto  $scheme;
    }
    add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
    # This line was taken from another config file, not sure if those pins shouldn't be changed or something?
    add_header Public-Key-Pins 'pin-sha256="klO23nT2ehFDXCfx3eHTDRESMz3asj1muO+4aIdjiuY="; pin-sha256="633lt352PKRXbOwf4xSEa1M517scpD3l5f79xMD9r9Q="; max-age=2592000; includeSubDomains';

    ssl on;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK';
    ssl_session_cache shared:SSL:10m;
    ssl_dhparam /etc/ssl/dhparam.pem;
    ssl_stapling on;
    ssl_stapling_verify on;
}

Я думал, что в каждом руководстве по этому поводу предлагается установить порт на 443 (очевидно), но я думаю, что здесь этого не должно быть, поскольку я все равно перенаправляю с 443 на: 8090 в nginx. Я что-то упускаю?

С уважением!

Филип

=================

РЕДАКТИРОВАТЬ:

я вижу это sudo netstat -plutn ничего не показывает при прослушивании на 8090. Похоже, я что-то испортил с файлами конфигурации? Я буду с нетерпением ждать этого.

На веб-сайте gitlabs есть руководство о том, как настроить его с помощью не связанного веб-сервера. http://docs.gitlab.com/omnibus/settings/nginx.html#using-a-non-bundled-web-server показывает необходимые изменения для конфигурации gitlab. Вы установили 'web-server['external_users'] вашему пользователю nginx ?. У них также есть готовый nginx.conf, который вы можете добавить как виртуальный хост. https://gitlab.com/gitlab-org/gitlab-recipes/blob/master/web-server/nginx/gitlab-omnibus-ssl-nginx.conf , он proxy_passes к сокету unix, а не через tcp.

Конфигурация gitlab считает, что будет получать трафик https, но конфигурация nginx передает ему http. Измените ссылки https в файлах конфигурации gitlab на http, и все должно быть в порядке. Это не повлияет на то, что nginx обращается к клиентам (https).