我已经在我的 Ubuntu 服务器中安装了 Nexus Repo,我能够将 IP 地址解析为自定义域。
现在,如果我想访问该存储库,我会执行以下操作
http://example.com:8081
我不想在 URL 中指定端口,我需要知道,如何使用浏览器默认的端口 80 或 443。 目前 80 端口正在被 nginx 服务器使用。我尝试将 nginx 的端口更改为不同的端口,然后将 Nexus 端口更改为 80,但 Nexus 抛出错误并且无法绑定到端口 80 或 443。
有办法吗?如果我只提供我的域名,我的 Nexus 存储库应该打开
http://example.com
端口 80 需要特殊权限才能允许程序绑定到它。 (任何低于 1024 的端口)。
请参阅:https://serverfault.com/a/112798
上面的答案显示了 IPTables 解决方案。
您可以做的另一件事就是向您的 nexus 实例发出 nginx 代理请求。
sudo -i
cd $nexus-install/opt/nexus/etc/ssl
生成公私钥对。
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
生成公共证书文件。
keytool -printcert -sslserver www.domain.com:443 -rfc > nexus.cert
编辑 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
linux不允许非root用户使用1024以下的端口;调整 启动端口,允许非root用户使用所有端口。
sudo echo "net.ipv4.ip_unprivileged_port_start=0" >> /etc/sysctl.conf
sudo sysctl -p
确认jetty-http.xml,该文件位于/etc/jetty Nexus 安装目录的目录。 sslContextFactory 部分用于指定证书和密码。就做 确保 keystore.jks 文件位于 etc/ssl 目录中 Nexus 安装目录的。密码是字符串 当公钥-私钥时由 -storepass 参数指定 第二步生成对。
重启nexus服务。等待nexus服务器加载 成功访问443端口网页。
sudo systemctl restart nexus