Egg: nginx 反向代理,页面404

Created on 25 Oct 2019  ·  10Comments  ·  Source: eggjs/egg

代理机器上:

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的设备,我不知道是哪里出了问题

Most helpful comment

额。。。 文档都写了 router.js,然后你不遵循文档,命名别的,还能再补充什么说明?

哪些 issue 是 Controller 的,文档里面也很清晰的说明会转驼峰的,跟这个 router 不是一个问题。

All 10 comments

这个问题估计还是你 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 不是一个问题。

Was this page helpful?
0 / 5 - 0 ratings

Related issues

xcstream picture xcstream  ·  3Comments

yuu2lee4 picture yuu2lee4  ·  3Comments

dizhifeng picture dizhifeng  ·  3Comments

popomore picture popomore  ·  3Comments

wujianling picture wujianling  ·  3Comments