我试图找到一种方法来将我的生产Rails服务器绑定到端口80,而不必使用root特权运行整个服务器。我的问题基本上与“非根进程是否可以绑定到Linux上的“特权”端口(<1024)的方法? ”相同,只是我需要使用Rails来做到这一点。目前,我所提到的问题的前两个答案要么要求我向CAP_NET_BIND_SERVICE
Ruby解释器授予权限(可能不是一个好主意),要么在启动服务器后放弃root特权(我不确定Ruby是否可以实现)。有任何想法吗?
因此,基本上,答案是您没有。可能有一些真正的技巧可以使这项工作完成,但是您实际想要这样做的几率非常低。相反,请在非特权端口上运行Rails,并设置像nginx这样的真实Web服务器以转发到Rails。
作为一个非常简单的示例,在nginx中,您可以使用如下配置文件:
upstream rails_server {
server localhost:3000;
}
server {
listen 80;
location / {
root /home/deploy_user/rails_app/public;
try_files $uri @missing;
}
location @missing {
proxy_pass http://rails_server;
proxy_set_header Host $http_host;
proxy_redirect off;
}
}
从长远来看,该解决方案也更好,因为它使您的基础架构更加灵活。例如,如果您需要将应用程序扩展到多台计算机,则可以使用nginx作为负载平衡器,并将其转发请求到运行在不同计算机上的大量Rails服务器。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句