技术解析

nginx 静态文件转发
0
2021-05-19 21:08:52
idczone

nginx 支持把抗投诉服务器静态文件也一起 proxy_pass 了吗? 我在前端服务器配置了个 nginx,另外个服务器跑 nexus,现在想把 nexus 通过 nginx 代理,遇到一个问题,就是默认的 css js 的静态文件,没法通过 nginx 转发给 nexus,直接提示在 /usr/local/nginx/html/static/下找不到文件,我纯粹想把 nginx 当个端口转发使用,连静态文件一起转发了


支持的 再好好检查下路径对不对吧

把 nexus 通过 nginx 代理, 为什么要把静态文件通过 nginx 转发给 nexus ?看你的描述应该是把静态文件通过 Nexus 转发给 Nginx 吧…


因为 nexus 自带了一个 netty,nginx 在 A 服务器上,nexus 在 B 服务器上,如果不把 css js png 等静态文件的请求发到 B 上面去的话,那会在 A 服务器的 root 下面找,就 404 了
目前临时的做法是没在 http 里面做,直接写了个 upstream,纯粹当个端口转发用了

以我菜菜的水平来说应该可以的,不过不是应该把静态文件用 nginx 管理吗,怎么要 nginx->nexus->静态的?

贴个配置看看

你这个需要配置 Location 转发到后端的 upstream

如果 nginx 和 nexus 在一台服务器,这么是没问题的
server {
listen *:80;
server_name www.example.com;

allow large uploads of files
client_max_body_size 1G;

optimize downloading files larger than 1G
2G;

location / {
proxy_pass http://localhost:8081/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
如果是在 2 台服务器,这样就有问题了,/static 下的文件就会去找 nginx 的 root,不会被转发的
server {
listen *:80;
server_name www.example.com;

allow large uploads of files
client_max_body_size 1G;

optimize downloading files larger than 1G
2G;

location / {
proxy_pass http://10.0.0.100:8081/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

你把 proxy_pass 那行,最后的 /去掉试试


没用,我试过的,无论如何都在本地查找文件,不会把静态文件转发

你贴的配置里没有指定本地目录,要么是有其他优先级高的配置?你可以发起一条正常请求,并把 log 贴上来看看,要把 upstream_addr 打出来


突然又可以了,也许是某条记录冲突了

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服