1
lucas56 2017-12-12 04:46:28 +08:00 via iPhone
之前遇到过,修改下 proxy_set
|
2
lucas56 2017-12-12 04:47:07 +08:00 via iPhone
proxy_set_header
|
3
qfdk 2017-12-12 05:49:27 +08:00 via iPhone
其实可以考虑用我的方案 http://blog.qfdk.me/post/2017-10-23
|
6
marknote 2017-12-12 06:57:48 +08:00 via iPhone
location / {
18 proxy_pass http://helloworld; 这里有问题吧 自己 proxy 自己 死循环了 |
7
ericgui OP @marknote 这一段是我抄网上的,因为 log 里有个 upstream,我搜了一下, 说是这样写。
其实这样写没问题,我的网站可以工作,就是登陆成功后跳转就出 502 当然,22 和 27 行是重复的,已经去掉了一行了。 |
8
tlday 2017-12-12 08:18:15 +08:00 via Android
建议先定位问题出在 Node 代码层面还是 nginx。
不要反向代理,打开浏览器 Network 里面的 preserve log 再尝试重现问题。 |
9
mcfog 2017-12-12 08:28:25 +08:00 via Android
看看 node 的日志吧,感觉是 node 有问题 crash 了然后瞬间被 pm 又拉起来了
|
10
ericgui OP @tlday 应该是 nginx 的问题,我在本地没任何问题,跳转都 OK,部署之后,也能正常打开网站。
刚才按照您的建议,打开了 preserve log,显示进入登陆页,GET 200,提交用户名和密码,POST 302 (因为登陆成功就跳转),然后立刻就 502 了。 |
12
yimity 2017-12-12 09:29:45 +08:00
把 12345 去掉。
|
13
yimity 2017-12-12 09:32:44 +08:00 1
把 12345 删掉
proxy_pass http://helloworld; 这个直接给你本地的 ip 和端口。 server { listen 80; server_name abc.com; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; proxy_pass http://172.18.0.5:3000; } } |
15
KuroNekoFan 2017-12-12 09:56:16 +08:00
@qfdk nodejs 做反代对比 nginx 有什么优势吗
|
16
whypool 2017-12-12 09:58:42 +08:00
nginx 配置不对吧;
|
17
tlday 2017-12-12 12:46:52 +08:00 via Android
302 跳转有多种情况,可以看下 303 或者 307。我个人倾向于认为是你的 302,POST 请求发给 node 端导致 express 那里崩溃了,然后被 pm2 直接瞬间拉起来了。nginx 出问题的几率不大。刷新速度过快 502 应该也是你 express 那里程序写的问题,但两个问题可能没有关联。建议你看看 express 的日志,考虑把所有的详细日志打出来。你的情况下,默认日志的位置应该在~/.pm2/log 之类的地方,有几个 worker 就有几个日志,挨个检查一下。
|
18
tlday 2017-12-12 12:51:51 +08:00 via Android
另外,nginx 和 pm2 合用似乎是重复的。因为 pm2 起多个 worker,但是只代理一个端口,pm2 也是会作为负载均衡转发请求给各个 worker 的。不过它的自动重启对于 express 这种没有最外层 ExceptionHandler,崩溃就 GG 的程序还是很有必要的。
|
19
qfdk 2017-12-12 14:53:13 +08:00 via iPhone
@KuroNekoFan 简单:) 不用搞 nginx 复杂肥肉编译 几行代码搞定 加个 forever 美滋滋
|
20
defunct9 2017-12-12 18:28:49 +08:00 via iPhone
开 ssh,上去帮你看看
|