Ruby on rails 使Rails服务器端口3000可通过域名访问(AWS EC2、Cloudflare)
我有一个开发环境,我想通过一个特定的域名访问,即“example.com”。这是一个合法的开发环境(整个puma+sqlite 3 RoR启动工具包),我希望能够使用域名访问它 目前,AWS EC2的弹性IP可通过附加:3000访问。IPAddress:3000工作(ec2 NUMBERSHERE.ap-southest-1.compute.amazonaws.com:3000通过web浏览器)。我首先运行Ruby on rails 使Rails服务器端口3000可通过域名访问(AWS EC2、Cloudflare),ruby-on-rails,amazon-ec2,cloudflare,Ruby On Rails,Amazon Ec2,Cloudflare,我有一个开发环境,我想通过一个特定的域名访问,即“example.com”。这是一个合法的开发环境(整个puma+sqlite 3 RoR启动工具包),我希望能够使用域名访问它 目前,AWS EC2的弹性IP可通过附加:3000访问。IPAddress:3000工作(ec2 NUMBERSHERE.ap-southest-1.compute.amazonaws.com:3000通过web浏览器)。我首先运行screenbundle exec rails server-b0.0.0Yes,我正在A
screenbundle exec rails server-b0.0.0
Yes,我正在AWS EC2中运行我的开发环境。这是有意的
在我的Cloudflare帐户中,我已将类型A映射到名称“example.com”,并将内容映射到弹性公共ip。我已将类型CNAME映射到名称“WW”,并将内容映射到公共DNS
如何通过example.com实现与IPAddress:3000相同的功能
**我知道这忽略了一些最佳实践,但问题其实就在于此。我认为您无法在DNS级别执行任何操作。您可以使用
-p
选项更改rails服务器默认端口:
$screen bundle exec rails服务器-b0.0.0.0-p80
但是,为了使用80
端口(以及1024以下的任何其他端口),您需要使用root权限运行rails服务器
更好的选择是在本地主机上绑定rails服务器
(这是默认行为),并使用proxy\u pass
功能将Nginx添加为端口80
中侦听的反向代理,如下所示:
server {
listen 80;
listen [::]:80;
server_name example.com;
location / {
proxy_pass http://localhost:3000/;
}
}
我可以通过使用iptables将端口80的流量转发到3000
sudo iptables-t nat-I预路由-p tcp-dport 443-j重定向-到端口3000\
之后运行屏幕包execrails服务器-b0.0.0
工作了 我有根权限。我如何使用sudo执行此操作?我在UbuntuI上,获取权限被拒绝-绑定“0.0.0.0”端口80(Errno::EACCES)的(2)