Я только что завершил установку Sonatype Nexus 3.2.1-01 и пытаюсь опубликовать некоторые артефакты, используя задание Jenkins и плагин Nexus Artifact Uploader 2.9.
Загрузка начинается нормально:
100 % completed (572 kB / 572 kB).
Но тогда он выдает ошибку:
Return code is: 502, ReasonPhrase:Bad Gateway.
Серверы Jenkins и Nexus работают за обратным прокси-сервером, который, как я считаю, является источником проблемы.
Журнал Apache предполагает, что Nexus не ответил на запрос:
[Thu Apr 06 18:50:46.128569 2017] [proxy:error] [pid 10327] (32)Broken pipe:
[client some_ip:57928] AH01084: pass request body failed to 0.0.0.0:8081 (0.0.0.0)
[Thu Apr 06 18:50:46.128649 2017] [proxy_http:error] [pid 10327] [client some_ip:57928] AH01097: pass request body failed to 0.0.0.0:8081 (0.0.0.0) from some_ip ()
Это моя конфигурация VirtualHost в Apache для сервера Sonar:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin some@email.com
ServerName some.website.com
ServerAlias nsome.website.com
DocumentRoot /srv/www/nexus/public_html/
ErrorLog /srv/www/nexus/logs/error.log
CustomLog /srv/www/nexus/logs/access.log combined
ProxyPreserveHost On
ProxyPass / http://0.0.0.0:8081/
ProxyPassReverse / http://0.0.0.0:8081/
ProxyPassReverse / https://some.website.com/
SSLCertificateFile /etc/letsencrypt/live/some.website.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/some.website.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateChainFile /etc/letsencrypt/live/some.website.com/chain.pem
</VirtualHost>
</IfModule>
Я попытался добавить следующее, как описано в других ответах, но не помогло:
1) Отключение проверки сертификатов SSL (хотя они действительны):
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
2) Форсирование заголовков запросов:
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"
3) Установка таймаутов и опций поддержки активности в строке ProxyPass:
ProxyPass / http://0.0.0.0:8081/ retry=1 acquire=3000 timeout=600 Keepalive=On
В итоге ошибка 502 (плохой шлюз) не имела ничего общего с основной причиной проблемы. Версия, указанная в артефакте для публикации для версии моментального снимка, не соответствовала политике Nexus, и это вызывало ошибку.