目前我的 Ubuntu 服务器使用 Apache2 + Passenger 运行 RubyOnRails 应用程序。
现在我需要部署一个需要在 Thin 而不是 Passenger 上运行的 Sinatra(普通 Ruby 应用程序)。
我熟悉配置 Apache,并且愿意以这种方式继续使用 VirtualHosts(在站点可用中)等。
如何将 Apache 中的 VirtualHost “路由”至 Thin 服务器?
答案1
您将把 Apache 配置为“反向代理” - 该搜索词将为您指出大量有关配置的信息,但这里有一个示例,应该可以让您了解您正在寻找的大部分部署。
如果您要使用不同的主机名和不同的<VirtualHost>
,那么您可以执行以下操作:
<VirtualHost *:80>
ServerName sinatra.example.com
# Any normal settings you use go here; access logs, ServerAdmin, etc
# Replace the 9999 below with the port that thin is using, note that it can't
# be the same as Apache's port.
# This can also be a service running on adifferent computer if you
# use another IP address instead of 127.0.0.1
ProxyPass / http://127.0.0.1:9999/
ProxyPassReverse / http://127.0.0.1:9999/
</VirtualHost>
对您来说可能有用的另一种配置是将其作为现有的子目录<VirualHost>
;您可以<Location>
向现有配置中添加一个块:
<Location /sinatra/>
ProxyPass http://127.0.0.1:9999/
ProxyPassReverse http://127.0.0.1:9999/
</Location>
答案2
您可以使用 Varnish 路由应用请求。我在上一份工作中用我们的 RoR/Varnish/NGINX 堆栈做过这件事。
此外,Varnish 缓存非常棒!