如何在 Nexus Repo 中设置自定义域而不使用 URL 中的端口

问题描述 投票:0回答:2

我已经在我的 Ubuntu 服务器中安装了 Nexus Repo,我能够将 IP 地址解析为自定义域。

现在,如果我想访问该存储库,我会执行以下操作

http://example.com:8081

我不想在 URL 中指定端口,我需要知道,如何使用浏览器默认的端口 80 或 443。 目前 80 端口正在被 nginx 服务器使用。我尝试将 nginx 的端口更改为不同的端口,然后将 Nexus 端口更改为 80,但 Nexus 抛出错误并且无法绑定到端口 80 或 443。

有办法吗?如果我只提供我的域名,我的 Nexus 存储库应该打开

http://example.com
nginx ssl jetty nexus sonatype
2个回答
2
投票

端口 80 需要特殊权限才能允许程序绑定到它。 (任何低于 1024 的端口)。

请参阅:https://serverfault.com/a/112798

上面的答案显示了 IPTables 解决方案。

您可以做的另一件事就是向您的 nexus 实例发出 nginx 代理请求。

参见:https://stackoverflow.com/a/46067132/775715


0
投票
  1. 进入keystore目录,将账户更改为root。
 sudo -i 
 cd $nexus-install/opt/nexus/etc/ssl
  1. 生成公私钥对。

    keytool 
    -genkeypair 
    -keystore keystore.jks 
    -storepass password 
    -alias jetty 
    -keyalg RSA 
    -keysize  2048 
    -validity 36500 
    -dname cn=<domain.com>,ou=<unit>,o=<company>,l=city,st=<state>,c=<country> 
    -ext san=dns:<www.domain.com>,IP:<127.0.0.1> 
    -ext bc=ca:true
    
  2. 生成公共证书文件。

    keytool -printcert -sslserver www.domain.com:443 -rfc > nexus.cert
    
  3. 编辑 nexus-default.properties 文件。更改应用程序端口 字段更改为 application-port-ssl 并将端口更改为 443.Change nexus-args 字段中的 jetty-http.xml 到 jetty-https.xml

    cp /opt/nexus/etc/nexus-default.properties /opt/nexus/etc/nexus-default.properties.bak
    vim -N /opt/nexus/etc/nexus-default.properties
    application-port-ssl=443
    nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-https.xml,${jetty.etc}/jetty-requestlog.xml
    
  4. linux不允许非root用户使用1024以下的端口;调整 启动端口,允许非root用户使用所有端口。

    sudo echo "net.ipv4.ip_unprivileged_port_start=0" >> /etc/sysctl.conf
    sudo sysctl -p
    
  5. 确认jetty-http.xml,该文件位于/etc/jetty Nexus 安装目录的目录。 sslContextFactory 部分用于指定证书和密码。就做 确保 keystore.jks 文件位于 etc/ssl 目录中 Nexus 安装目录的。密码是字符串 当公钥-私钥时由 -storepass 参数指定 第二步生成对。

  6. 重启nexus服务。等待nexus服务器加载 成功访问443端口网页。

    sudo systemctl restart nexus
    
© www.soinside.com 2019 - 2024. All rights reserved.