文章目录
一、问题现象
- 通过域名访问nexus主页,主页html可以正常加载,但是静态资源加载超时,原因是静态资源的请求地址是内网ip。
- 通过ip+端口或域名+端口的方式访问是正常的。
nginx和nexus的配置方式
- nexus通过docker启动,使用默认8081端口以及默认host。
- nginx监听域名,通过服务器内网ip转发到8081端口,配置如下:
server{
listen 80;
server_name nexus.xxx.cn;
location / {
proxy_pass http://192.168.0.182:8081;
}
}
二、原因分析
nexus在接受请求时,会绑定请求者的host,作为后续资源加载的请求地址。
我在nginx中配置的是内网ip的转发,对nexus来说这个host就是内网ip。
后面添加了Host这个请求头之后,相当于告诉nexus此次请求的host是nexus.xxx.cn这个域名。
三、解决方式
在nginx转发是添加Host请求头,配置如下:
server{
listen 80;
server_name nexus.xxx.cn;
location / {
proxy_set_header Host $host;
proxy_pass http://192.168.0.182:8081;
}
}