配置如下:
server {
大带宽服务器 listen 443 ssl;
server_name host;
index index.html;
root /www/pages;
location /api {
proxy_pass http://127.0.0.1:5000/api;
}
}
这里按我理解的意思难道不是访问首页的时候, 直接由 ngnix 返回一个静态页就完事,不需要程序介入的吗?
但程序的日志却记录了 404 GET / , 程序里我也压根没配 / 的路由
你说的程序日志是指什么日志?
如果是指 Nginx 那正常,按你这段配置来看,只要你没关日志那么访问 / 也会写入到 access_log。如果你是说 5000 端口程序的日志,那肯定是你搞错了,可能是你改了 Nginx 配置文件没重载还是用的旧配置。
LZ 意思是 GET / 默認讀取了 /www/pages/index.html,這個文件也是存在的,但是為什麼 nginx 會有 404 的錯誤日誌
不确定楼主是什么意思,看着像是你说的这个意思,也有点像是说后端程序也接收到 / 的请求。
就是 5000 端口的程序日志记录了下来,所以我才纳闷
如果你确认 Nginx 这个配置已经生效,那 / 请求肯定不是 Nginx 这边转发过去的,你可以排查一下其他请求来源,比如你在浏览器打开过后端链接的话,浏览器为了拿个缩略图有可能再向后端发送一个请求。
5000 盲猜刀奶扩,我复制你的配置,正常返回 index.html 的内容.
感觉可能是 /www/pages 这个路径,你运行 nginx 的用户没有权限
没有 SSL 证书?
建议查看下 nginx 日志...别看你程序报什么鬼了
ngnix 日志也没什么毛病, 其实运行也很正常, 我只是非常非常好奇程序为什么会记录这条日志, 因为我的理解是只有 /api 的请求才会去到程序那里处理...
nginx 需要检测后端服务状态的吧。location 没指定 index 和 root 的话好像是会继承上一级的
盲猜是 .net 程序,你看看是不是有人直接访问了你的 5000 端口,可以尝试直接在防火墙关闭 5000 端口,或者让后端程序只监听本地回环,再或者使用 unix 套接字代替 TCP 回环测试一下
应该是文件所在目录没有权限,我记得好像我也遇到过