github 上找了个 go 写的监控服务,想用 nginx 反向代理放到公网上,反向代理配置
server {
...
location / {
proxy_pass http://127.0.0.1:30666;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
按此配置执行后,访问根目录可以得到正确的 html ,但由 go 提供的静态资源无法加载,(比如 https://my.site/css/app.b9c5a4b6.css )这种资源,
在服务器本地运行
wget http://127.0.0.1:30666/css/app.b9c5a4b6.css
是可以正确获取到资源的,但是 nginx 无法代理,推测也许是 nginx 扫描本地目录当中没有 css 这个文件夹所以返回 404 ?
总之是本地有,远程返回 404 ,有无大佬知道是怎么回事
贴个条,后续是修改了如下,然后解决的
server{
# ...
location / {
proxy_pass http://127.0.0.1:30666
# ...
}
location ~ .*\.(js|css)?$
{
expires 12h;
proxy_pass http://127.0.0.1:30666;
}
}
nginx这么多年没细研究过也用过来了,可能是一般都是静态资源放个文件夹,动态内容单独反代,没遇到过这种情况。。。话说我一直以为location规则只能匹配一个,匹配到了就结束了。。但是突然发现就算是正常的反向代理,比如匹配到/返回一个静态资源的话,依然会匹配接下来的location,设置过期时间。。这是个什么原理啊。。
1
tcp 2022-05-30 07:44:45 +08:00
websocket ?
|
2
lovelylain 2022-05-30 08:04:06 +08:00 via Android
proxy_set_header Connection $http_connection;
|
3
estk 2022-05-30 08:32:33 +08:00 via Android
宝塔。。
|
4
villivateur 2022-05-30 08:42:23 +08:00 via Android
我觉得不太可能,要不你把你完整的配置发出来再看看
|
5
RoyLaw 2022-05-30 08:51:01 +08:00
去掉类似的配置:
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; error_log /dev/null; access_log /dev/null; } location ~ .*\.(js|css)?$ { expires 12h; error_log /dev/null; access_log /dev/null; } |
6
ragnaroks 2022-05-30 09:00:09 +08:00
websocket 单独代理
|
7
coolloves 2022-05-30 13:11:59 +08:00
贴下 nginx 的日志吧
nginx 只是负责转发,如果转发了,那就要看后端 go 的 web 日志为啥找不到静态资源 |