【发布时间】:2015-02-19 20:31:11
【问题描述】:
最终目标:我正在尝试获取 Ruby on Rails 端口
我使用nginx 作为负载平衡器,在我使用thin 运行的rails 服务器上的几个不同的ruby 之间进行切换。
我跟着this tutorial 弄清楚如何将proxy_pass 传递到不同的服务器,但我想看看它是否确实有效。我能确定这是否有效的唯一方法是查看运行瘦服务器的端口。
我无法使用request.port,因为请求实际上是通过nginx路由的,因此每个请求端口都有80。当我需要真正运行 rails 服务器的端口时。
根据this answer,我尝试过使用:
Rails::Server.new.options[:Port]
在开发模式下工作很好,但是当切换到生产模式时,它给了我一个500 说
FATAL -- : ActionView::Template::Error (uninitialized constant Rails::Server)
nginx 配置
server_name myname.com;
upstream dashboard_servers {
server <hidden>:3001 fail_timeout=0;
server <hidden>:3002 fail_timeout=0;
server <hidden>:3003 fail_timeout=0;
server <hidden>:3004 fail_timeout=0;
}
server {
listen 3000;
location / {
# set proxy headers
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://dashboard_servers;
}
}
我的 Rails 服务器在端口 3001-3004 上,这是我需要的端口。
如何获取 Rails 服务器真正运行的端口?
【问题讨论】:
-
只是为了确保 nginx 和所有 ruby 服务器都在同一台服务器上工作?请澄清设置
-
它们确实在同一台服务器上运行。
标签: ruby-on-rails ruby nginx