
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 年 5 月 30 日 websocket ? |
2 lovelylain 2022 年 5 月 30 日 via Android proy_set_header Connection $http_connection; |
3 estk 2022 年 5 月 30 日 via Android 宝塔。。 |
4 villivateur 2022 年 5 月 30 日 via Android 我觉得不太可能,要不你把你完整的配置发出来再看看 |
5 RoyLaw 2022 年 5 月 30 日 去掉类似的配置: 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 年 5 月 30 日 websocket 单独代理 |
7 sparkssssssss 2022 年 5 月 30 日 贴下 nginx 的日志吧 nginx 只是负责转发,如果转发了,那就要看后端 go 的 web 日志为啥找不到静态资源 |