我有一个开发环境,我想通过一个特定的域名访问。"example.com“。这是一个合法的开发环境(整个puma +SQLite3 RoR启动工具包),我希望它能够使用域名进行访问。
目前,亚马逊EC2的弹性IP可以通过添加:3000来访问。IPAddress:3000通过web浏览器工作(ec2-NUMBERSHERE.ap-southeast-1.compute.amazonaws.com:3000 )。我从运行AWS开始是的,我在screen bundle exec rails server -b 0.0.0.0 EC2中运行我的开发环境。这是故意这样做的。
在我的Cloudflare账户中,我已经将类型A映射为名称example.com,并将内容映射为弹性公网ip。我已经将类型CNAME映射到名称"wwww“,并将内容映射到公共DNS。
如何通过example.com实现与IPAddress:3000相同的功能?
**我知道这忽略了最佳实践,但问题确实是这样的。
发布于 2020-06-15 07:12:29
我认为你不能在DNS级别上做任何事情。您可以使用-p选项更改rails服务器的默认端口:
$ screen bundle exec rails server -b 0.0.0.0 -p 80但是,您需要以根权限运行rails server,才能使用80端口(以及1024以下的任何其他端口)。
一个更好的选择是将rails server绑定到本地主机(这是默认行为),并使用proxy_pass功能将Nginx添加为在端口80中侦听的反向代理,如下所示:
server {
listen 80;
listen [::]:80;
server_name example.com;
location / {
proxy_pass http://localhost:3000/;
}
}发布于 2020-06-15 07:37:23
我可以使用iptables将端口80的流量转发到3000。
sudo iptables -t nat -I PREROUTING -p tcp --dport 443 -j REDIRECT --to--ports 3000\
在那之后,运行screen bundle exec rails server -b 0.0.0.0起作用了!
https://stackoverflow.com/questions/62379044
复制相似问题