簡體   English   中英

將Rails服務器綁定到Linux上的端口80,而不以root身份運行它

[英]Binding a Rails server to port 80 on Linux without running it as root

我正在嘗試找到一種方法將生產Rails服務器綁定到端口80,而無需使用root權限運行整個服務器。 我的問題與“在Linux上綁定到”特權“端口(<1024)的非root進程有沒有辦法相同 ”除了我需要使用Rails執行此操作。 目前,我引用的問題的前兩個答案要求我向Ruby解釋器授予CAP_NET_BIND_SERVICE權限(可能不是一個好主意)或在啟動服務器后刪除root權限( 我不確定Ruby是否可行 ) 。 有任何想法嗎?

所以基本上,答案是你沒有。 有可能有一些真正的hacky方式來使這項工作,但你實際想要這樣做的可能性非常低。 相反,在非特權端口上運行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服務器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM