ip设置成公网IP就无效了,为什么?

cmy2my

我在腾讯租了一个云服务器,公网IP是119.29.138.107。
我在 start_gateway.php 里把0.0.0.0改成119.29.138.107然后在尝试运行,就出现了Error。

PHP Warning:  stream_socket_server(): unable to connect to tcp://119.29.138.107:8282 (Cannot assign requested address) in /home/kong/GatewayWorker/Workerman/Worker.php on line 1383

Warning: stream_socket_server(): unable to connect to tcp://119.29.138.107:8282 (Cannot assign requested address) in /home/kong/GatewayWorker/Workerman/Worker.php on line 1383
PHP Fatal error:  Uncaught exception 'Exception' with message 'Cannot assign requested address' in /home/kong/GatewayWorker/Workerman/Worker.php:1385
Stack trace:
#0 /home/kong/GatewayWorker/Workerman/Worker.php(522): Workerman\Worker->listen()
#1 /home/kong/GatewayWorker/Workerman/Worker.php(418): Workerman\Worker::initWorkers()
#2 /home/kong/GatewayWorker/start.php(32): Workerman\Worker::runAll()
#3 {main}
  thrown in /home/kong/GatewayWorker/Workerman/Worker.php on line 1385

但是0.0.0.0或者内网则可以,并且设置0.0.0.0后,可以通过学校的电脑访问。

请问一下这是为什么?是腾讯云的问题还是我Linux设置的问题?还是什么别的原因?

谢谢。:D

还有一个小建议:

网站发表问题下面的“浏览模式”经常被误认为是编辑框,然后按一下Blackspace就整个页面都倒退了,体验不是很好。

9139 5 0
5个回答

walkor

参考手册,http://doc3.workerman.net/faq/workerman-start-fail.html

Cannot assign requested address

简单的说119.29.138.107不是你服务器的IP,无法监听。
你可以运行 ip addr看下你服务器ip是多少,如果对服务器ip有疑问,可以去问下腾讯云的客服。

感谢你的建议,不过有个预览框体验会更好一些。

  • cmy2my 2016-09-01

    谢谢你的答复!

    [root@VM_214_74_centos GatewayWorker]# ip addr
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:1e:dd:ba brd ff:ff:ff:ff:ff:ff
    inet 10.104.214.74/18 brd 10.104.255.255 scope global eth0
    valid_lft forever preferred_lft forever

    这个的意思是只有内网IP吗?但是我用监听0.0.0.0确实可以被外网访问到。

  • walkor 2016-09-01

    不客气
    如果对服务器ip有疑问,可以去问下腾讯云的客服。

Syname

遇到了同样的问题,写给未来同样遇到Cannot assign requested address问题的人。
当内网ip,0.0.0.0测试可以通过但是换成公网就不可以,请参照以下步骤进行检查:
1.ip要填对,公网ip
2.( 测试时)云服务器上,安全组配置要把端口允许的ip设为0.0.0.0/0或者其他IP

系统防火墙,也是要配置规则的,百度怎么配置就好了,测试时可以直接关掉。
系统默认防火墙是打开的,所以目测题主和我一样问题出在了系统防火墙这里。

  • 暂无评论
朕震惊了

遇到过同样的问题,后来工单咨询阿里云得知如果是阿里云专有网络的话,那么你的服务器的外网ip实际上不属于你这台服务器,这个ip实际上类似一个代理设备,客户端发的请求先到这个代理上,然后转发到你的真实服务器。由于这个ip不属于你这台服务器,所以监听不了,启动会报错。

如果是阿里云的经典网络就没问题,ip是真的你所在服务器的网卡上。

估计腾讯云也是类似的问题。

  • 暂无评论
朕震惊了

实际上没必要监听本机外网ip,直接监听0.0.0.0就好了,省事,移植性也好,不会给自己留坑。

  • 暂无评论
焦躁的蚂蚁

专有网络不行,要把client和worker部署在一个内网里

  • 暂无评论
年代过于久远,无法发表回答
🔝