背景
在Linux服务器上部署了一个在Giithub上开源的web项目,一个用ruby写的项目,在Linux服务器上安装了rvm,利用rvm下载ruby环境的各个版本,并用bundle管理下载项目需要的软件包
bundle exec rackup
项目运行正常,端口号为9292 ,LInux服务器本地可以通过
curl http://127.0.0.1:9292
正常访问
之前在自己电脑的ubuntu系统上部署过这个项目,在本地可以通过http://127.0.0.1:9292进行访问,但是部署到Linux服务器上以后,项目运行正常但无论如何都不能在同一局域网下的windows电脑上进行访问
问题描述
本机状态
系统:Windows 10
防火墙状态:打开(但是这个无所谓,项目部署在Linux服务器上)
同一局域网下可以ping通Linux服务器,但是,使用telnet ip 9292 提示连接拒绝
如图
PS:win10下如何安装telnet可以参考下面的链接
win10系统安装telnet客户端
Linux服务器:CentOS系统
防火墙关闭,之前按照相关教程把9292端口开启了,后来又把防火墙整个关闭了,但是始终无法在win10电脑上访问网页
PS:开启端口与关闭防火墙可参考下面的文章
linux:centos7开启80端口,开放外网访问
且端口运行正常:
终于!!!我遇到了这篇文章
Windows 与 Linux下关于端口不能访问的问题
真的是救我于水火之中啊
之前也走了一些弯路,配置nginx或者apache等,主要是和我遇到的情况不符合,但是文章挺详细的,链接放在下面可供参考:
Nginx服务器安装及配置文件详解
原因分析
根据Windows 与 Linux下关于端口不能访问的问题所述,完全不是防火墙或者权限配置的问题,而是一个简单的网络地址问题:
localhost本质上是一个域名,理论上可以指向任何IP地址,只不过一般都是指的是环回地址:127.0.0.1,对于环回地址而言,其他计算机是不能访问的!!!
看这张图
9292端口绑定在环回地址上
所以telnet 192.168.1.127 9292
提示Connection Refused,因为端口9292在127.0.0.1上
把 192.168.1.127
作为9292端口绑定的参数,并重新启动程序之后,看到端口信息如下:
之后再用win10电脑访问 192.168.1.127:9292 就访问成功啦!
解决步骤
把 localhost 对应的地址127.0.0.1改成主机的IP地址
改成:
使用命令
vim /etc/hosts
改动即可
完结撒花!
- 重要参考链接:
Windows 与 Linux下关于端口不能访问的问题