代理机器上:
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://10.3.6.172:7001;
}
我在nginx机器也能请求到,但是用域名在浏览器打开的时候,会显示404
curl 10.3.6.172:7001
Redirecting to
在10.3.6.172的机器上检查端口:
netstat -nap|grep 7001
tcp6 0 0 :::7001 :::* LISTEN 11520/node
都是centos7.4的设备,我不知道是哪里出了问题
这个问题估计还是你 nginx 配置哪里不对造成的,我理解和 web 框架层面关系不大,可以继续排查下 nginx 方面的配置。
最后解决了吗?
注意文件命名规范,controller的文件名 首字母要小写,如果文件名大写,linux环境下会一直返回404
注意文件命名规范,controller的文件名 首字母要小写,如果文件名大写,linux环境下会一直返回404
跟这没关系
注意文件命名规范,controller的文件名 首字母要小写,如果文件名大写,linux环境下会一直返回404
> 跟这没关系
亲测,egg 项目,controller和router文件命名都大写, linux 404
eg: 文件名Router.js, controller/User.js
router code: router.get('/api/v1/user', controller.user.resource);
部署至Linux,访问 /api/v1/user 直接404
本地windows, 访问 /api/v1/user 正常进入 user.resource中
你到机器上 ls 看下是不是真的大小写吧(如果通过 git 的,没有 git mv 的话是提交不上去的),或者提供最小可复现方式。
我们有三个操作系统的 ci 保证的,日常也这么用,跟大小写没啥关系。
我去机器上了试了下,
如果app目录下的router.js 的命名是大写(Router.js)的话,在linux就会404,可能和linux环境严格区分大小写有关。
额。。。 router.js 这个文件本身的规范要求就是小写啊。
上面说的是 Controller 这些是不管大小写的。
文档上是不是最好说明一下。。router.js 必须按规范命名。。看到好几个issue都应该是类似的问题。。
额。。。 文档都写了 router.js,然后你不遵循文档,命名别的,还能再补充什么说明?
哪些 issue 是 Controller 的,文档里面也很清晰的说明会转驼峰的,跟这个 router 不是一个问题。
Most helpful comment
额。。。 文档都写了 router.js,然后你不遵循文档,命名别的,还能再补充什么说明?
哪些 issue 是 Controller 的,文档里面也很清晰的说明会转驼峰的,跟这个 router 不是一个问题。