Sonatype Nexus:使用Apache从SSL代理

时间:2013-09-29 22:39:39

标签: apache nexus mod-proxy

我们正在运行Sonatype的Nexus来存储我们的所有构建,缓存我们的依赖项等等。但是,我想远离默认安装的端口8081 URL,而是通过SSL托管它通过Apache代理。我已经设置了Apache的mod_proxy来代理它,以便https://myserver.com/nexus调出Nexus。我在虚拟主机配置中使用了以下配置指令:

# Configure mod_proxy to be used for proxying URLs on this site to other URLs/ports on this server.
ProxyRequests Off
ProxyVia Off
ProxyPreserveHost On
<Proxy *>
  AddDefaultCharset off
  Order deny,allow
  Allow from all
</Proxy>

# Proxy the Sonatype Nexus OSS web application running at http://localhost:8081/nexus
<Location /nexus>
  ProxyPass http://localhost:8081/nexus
  ProxyPassReverse http://localhost:8081/nexus
</Location>

这似乎符合Running Nexus Behind a Proxy的说明。但是,我无法清除Nexus中的“基本网址”设置:它不会让我留空。

所有主要是都有效:我可以通过HTTPS URL访问Nexus,登录并执行大多数GUI功能。

但是,登录时我收到以下警告消息:

  

警告http://myserver.com/nexus的基本网址设置与您的实际网址不符!如果您正在运行Apache mod_proxy,请使用more information来配置Nexus。

并非GUI中的所有内容都能正常运行。到目前为止,我已经注意到以下几点:

  • 系统供稿:出现以下错误:

      

    访问/ nexus / service / local / feeds时出现问题。原因是:

         

    请求标识的资源只能生成根据请求中发送的接受标头具有不可接受的内容特征的响应实体

         

    Nexus返回错误:ERROR 406:请求标识的资源只能根据请求中发送的接受标头生成内容特征不可接受的响应实体

  •   
  • 删除托管存储库:我浏览并删除了几个空的&amp;不需要的存储库。然而,在确认缺失后,仅去除了第一个缺失。我必须登录8081网站才能删除其他任何网站。
  •   

2 个答案:

答案 0 :(得分:4)

根据documentation,看起来更好的解决方案可能是向Apache配置添加RequestHeader:

RequestHeader set X-Forwarded-Proto "https"

我尝试了接受的答案,这似乎有效,但是一旦我添加了RequestHeader,我就可以取消选中Force URL并清除警告。不过,我还没有测试过OP所描述的其他行为。

答案 1 :(得分:3)

您只需在Administration-&gt; Server配置屏幕中调整baseUrl设置即可。设置您正在使用的网址,然后点击“强制基本网址”选项。