Уважаемое сообщество 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).