我刚刚完成了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 ()
这是我在Sonar服务器的Apache中的VirtualHostconfiguration:
<IfModule mod_ssl.c> <VirtualHost *:443> ServerAdmin [email protected] 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策略,并且这引发了错误。