如何通过IP启动Rails服务器,支持多指定域名及局域网访问
解决Rails应用局域网内自定义域名访问问题
方法一:局域网设备修改hosts(无需额外工具)
- 第一步:获取你的局域网IP
- Mac/Linux终端执行
ifconfig,找到类似inet 192.168.1.100的条目;Windows执行ipconfig,找到IPv4地址。
- Mac/Linux终端执行
- 第二步:启动Rails服务器绑定到局域网IP
rails s -b 你的局域网IP # 示例:rails s -b 192.168.1.100 - 第三步:让局域网内其他设备修改hosts文件
- Windows:找到
C:\Windows\System32\drivers\etc\hosts,用管理员权限打开,添加一行:192.168.1.100 domain1.eng.br domain2.com.br domain3.com.br - Mac/Linux:终端执行
sudo nano /etc/hosts,添加上述相同内容,保存退出。
- Windows:找到
- 完成后,其他设备就能通过
domain1.eng.br等域名访问你的Rails应用,和本地访问效果一致。
方法二:使用ngrok(无需修改设备hosts)
如果不想让局域网内设备修改hosts,可以用ngrok做域名转发,步骤如下:
- 下载ngrok客户端(官网下载对应系统版本,解压即可使用,无需安装)。
- 启动本地Rails服务器:
rails s -b 0.0.0.0 # 允许所有IP访问本地服务 - 根据需求选择ngrok使用方式:
- 临时访问(免费版可用):直接运行以下命令,ngrok会生成一个随机公网域名,转发到本地3000端口:
终端会输出类似ngrok http 3000https://abc123.ngrok.io的域名,把这个域名发给局域网内设备,它们就能通过这个域名访问你的应用,但无法使用你自定义的domain1.eng.br等域名。 - 使用自定义域名(需ngrok付费版):
- 先在ngrok后台添加你的自定义域名(如
domain1.eng.br),并在域名服务商处配置CNAME记录,指向ngrok提供的目标域名。 - 运行以下命令绑定自定义域名:
ngrok http --domain=domain1.eng.br 3000 - 重复上述命令为每个自定义域名创建隧道,这样就能用你自己的域名让局域网设备访问应用。
- 先在ngrok后台添加你的自定义域名(如
- 临时访问(免费版可用):直接运行以下命令,ngrok会生成一个随机公网域名,转发到本地3000端口:
内容的提问来源于stack exchange,提问作者Nathan Moreira
相关产品推荐
相关产品推荐

