通过负载均衡器获取rails服务器端口

时间:2015-02-17 17:49:28

标签: ruby-on-rails ruby nginx

最终目标:我正在尝试获取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 config

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服务器真正运行的端口?

1 个答案:

答案 0 :(得分:0)

好吧,如果你试图在rails控制台中运行该命令,我认为这就是为什么它会给你这个错误,因为没有端口,我只是通过在我的布局中添加该行来本地测试它并且它工作正常