摘要
遇到一個奇怪的問題,Maven 私服發生過遷移。同一個域名,但是IP發生變化,例如 10.1.0.1,遷移到了10.1.0.2。
現象是Maven總是從舊的10.1.0.1 Nexus私服下載jar包。
排查
- mvn 加上-X參數,檢查 nexus私服 域名是否正確。
- 檢查所有 settings.xml 文件,私服域名是否正確。
- 刪除本地local緩存
- 檢查DNS解析是否正確
排查結果
- nexus 私服域名完全正確
- settings.xml 文件私服域名正確。
- 刪除緩存無效
- DNS域名解析正確。
最終結論
發現settings.xml 中有一個http代理,改成active=false後正常。
<proxy>
<id>httpProxy</id>
<active>true</active>
<protocol>http</protocol>
<host>10.1.0.1</host>
<port>3128</port>
</proxy>
具體原因未深究。奇怪的是 3128 不是 nexus 的端口。
推測
由於走了HTTP代理,而代理和舊私服在同一個機器上,因而被解析到本地相同端口的Nexus服務。
即: nexus.xxx.com 因爲走了 10.1.0.1代理,流量轉發到 10.1.0.1, 而到這臺機器後,域名失效,變成本地服務了。
解決辦法
proxy配置加入 nonProxyHosts:
<nonProxyHosts>nexus.xxx.com</nonProxyHosts>