首页 新闻 会员 周边 捐助

centos访问本地127.0.0.1:5000的api问题

0
悬赏园豆:15 [待解决问题]

因为只有一个服务器,所以把前端后后端api都放在一个服务器里面,然后nginx只代理了80端口,但是ajax直接请求127.0.0.1:5000,但是都出现net::err_connection_refused。
然后我通过postman访问ip+端口就可以成功调用api,只是程序无法调用api,然后我换成localhost:5000或者0.0.0.0:5000都不行,是什么原因?

问题补充:

灬丶的主页 灬丶 | 初学一级 | 园豆:9
提问于:2020-12-25 09:16
< >
分享
所有回答(3)
0

用postman可以,程序不行,应该不可能
用fiddler看一下,两个有啥区别

不知道风往哪儿吹 | 园豆:2035 (老鸟四级) | 2020-12-25 09:59

我在我电脑上用postman是外网ip访问的,程序是直接在服务器上访问127.0.0.1
应该不用设置什么吧

支持(0) 反对(0) 灬丶 | 园豆:9 (初学一级) | 2020-12-25 10:00

@灬丶: 你只开放了80端口,为什么要用5000访问呢? 你用5000映射到80端口了吗?

支持(0) 反对(0) 不知道风往哪儿吹 | 园豆:2035 (老鸟四级) | 2020-12-25 10:02

@不知道风往哪儿吹: 为啥要映射,都在同一个服务器上需要映射吗?

支持(0) 反对(0) 灬丶 | 园豆:9 (初学一级) | 2020-12-25 10:03

@灬丶: 你在服务器能ping 通127.0.0.1:5000这个地址吗

支持(0) 反对(0) 不知道风往哪儿吹 | 园豆:2035 (老鸟四级) | 2020-12-25 10:21

@不知道风往哪儿吹:

支持(0) 反对(0) 灬丶 | 园豆:9 (初学一级) | 2020-12-25 10:30

@不知道风往哪儿吹: 错了

支持(0) 反对(0) 灬丶 | 园豆:9 (初学一级) | 2020-12-25 10:31
0

。。不熟,但是改成ip呢,看你控制台打印,http://127.0.00.1 这不是变成访问本地了吗。。

WMG-Eight | 园豆:973 (小虾三级) | 2020-12-25 10:35

什么意思

支持(0) 反对(0) 灬丶 | 园豆:9 (初学一级) | 2020-12-25 10:36

@灬丶: 。你看下你服务器host,配置127和localhost没,没配置就加上或者直接用ip多好。

支持(0) 反对(0) WMG-Eight | 园豆:973 (小虾三级) | 2020-12-25 11:03

@WMG-Eight: 对centos不是很熟悉

支持(0) 反对(0) 灬丶 | 园豆:9 (初学一级) | 2020-12-25 11:05

@灬丶: ...你在服务器上 curl http://127.0.0.1:5000/auth/token 看有结果吗。有的话那应该是nginx配置的问题。

支持(0) 反对(0) WMG-Eight | 园豆:973 (小虾三级) | 2020-12-25 11:16

@WMG-Eight: 有结果,但是我本地访问本地的端口也必须通过nginx吗?

支持(0) 反对(0) 灬丶 | 园豆:9 (初学一级) | 2020-12-25 11:18

@灬丶: 。。看你前台和nginx咋写的啊,一般都是前台不固定ip和端口,给后台url不一样,nginx拦截到这个url转发到对应的ip,当然你也可以前台就写死ip,但是,你在前台写死的话,就要写服务器的那个ip,不能用127,你浏览器打开的是在客户端,客户端的127访问的是客户端的本地,不是服务器。

支持(0) 反对(0) WMG-Eight | 园豆:973 (小虾三级) | 2020-12-25 11:28

@灬丶:
你是自己写的前台台自己玩的吗?。。。理解了没。。给你举个例子:
比如你现在服务器ip100,nginx代理80,通过80访问前台,这个时候你访问页面页面的请求类似:
http://192.168.0.100/index.html....
发送到后台的请求其实是
http://192.168.0.100/code/auth
http://192.168.0.100/user/getuserList
类似这样,但是这样和你前台页面请求不好区分,所以一般发送后台的会多加一段:
http://192.168.0.100/test/code/auth
http://192.168.0.100/test/user/getuserList
这样,nginx可以配置拦截 /test请求,转发到其它端口。
在server里面增加
location /test/ {
proxy_pass http://127.0.0.1:5000/;
}

支持(0) 反对(0) WMG-Eight | 园豆:973 (小虾三级) | 2020-12-25 11:39

@WMG-Eight: 是的,我前台访问80会代理到我的前端页面,然后里面的ajax调用本地的接口,地址写死的127.0.0.1,但是我刚设置了代理还是不行,404了

支持(0) 反对(0) 灬丶 | 园豆:9 (初学一级) | 2020-12-25 11:41

@灬丶:
斜杠位置的重要性

支持(0) 反对(0) WMG-Eight | 园豆:973 (小虾三级) | 2020-12-25 11:47

@WMG-Eight: 斜杠看不出来问题
location /gateway/ {
proxy_pass http://127.0.0.1:5000;
} 也不行

支持(0) 反对(0) 灬丶 | 园豆:9 (初学一级) | 2020-12-25 11:48

@灬丶:

location /gateway/ {
proxy_pass http://127.0.0.1:5000;
}
实际是:http://127.0.0.1:5000/gateway/auth/code

proxy_pass http://127.0.0.1:5000/;

实际才是:http://127.0.0.1:5000/auth/code

支持(0) 反对(0) WMG-Eight | 园豆:973 (小虾三级) | 2020-12-25 11:50

@灬丶:
上面location的斜杠,影响的是拼接的时候带不带。
比如:
location /gateway/ {
proxy_pass http://127.0.0.1:5000/;
}

实际是:http://127.0.0.1:5000/auth/code

location /gateway {
proxy_pass http://127.0.0.1:5000/;
}

实际应该是:http://127.0.0.1:5000//auth/code

你试验下。

支持(0) 反对(0) WMG-Eight | 园豆:973 (小虾三级) | 2020-12-25 11:52
0

前端是上了docker吗?然后前端请求了127.0.0.1:5000?
如果是这样,建议你换成内网地址
127.0.0.1:5000指的可能是你前端容器内的5000端口

如果不是在docker里面,那就当我没说

崩坏的领航员 | 园豆:438 (菜鸟二级) | 2020-12-25 14:43

不是docker

支持(0) 反对(0) 灬丶 | 园豆:9 (初学一级) | 2020-12-25 14:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册