Ruby on rails 将Rails服务器绑定到Linux上的端口80,而不以root用户身份运行

Ruby on rails 将Rails服务器绑定到Linux上的端口80,而不以root用户身份运行,ruby-on-rails,ruby,linux,thin,Ruby On Rails,Ruby,Linux,Thin,我试图找到一种方法,将我的生产Rails服务器绑定到端口80,而不必使用root权限运行整个服务器。我的问题基本上与“)相同。有什么想法吗?因此,基本上,答案是你没有。有可能有一些真正的黑客方法来实现这一点,但你真正想要这样做的几率非常低。相反,在非特权端口上运行Rails,并设置一个真正的web服务器,如nginx,以转发到Rails 作为一个超级简单的示例,对于nginx,您可能会使用如下所示的配置文件: upstream rails_server { server localhost:

我试图找到一种方法,将我的生产Rails服务器绑定到端口80,而不必使用root权限运行整个服务器。我的问题基本上与“)相同。有什么想法吗?

因此,基本上,答案是你没有。有可能有一些真正的黑客方法来实现这一点,但你真正想要这样做的几率非常低。相反,在非特权端口上运行Rails,并设置一个真正的web服务器,如nginx,以转发到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服务器。

您是否可以选择运行traditi将请求转发到另一个端口上运行的Rails服务器?例如,将请求运行并定向到非特权端口或在非特权端口上运行。实际执行此操作的几率非常低。在正常使用模式下,瘦、杂种、Puma、Unicorn或其他任何东西都应该位于非Ruby服务器的后面。看。是的,这是我第一次在没有其他人帮我设置服务器或像Heroku这样的PaaS的情况下亲自尝试部署生产应用程序;所以很有可能我不知道我想要什么。如果你愿意发布一个详细的答案,建议在端口80上绑定精简的替代方案(就像Jim在评论中所说的nginx一样)我接受这是一个有效的答案。这非常有效。包括
try\u files
指令,该指令直接通过nginx服务于任何公共资产,而不是将其委托给rails服务器,这是一个额外的分数