最终目标:我正在尝试获取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)
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服务器真正运行的端口?
答案 0 :(得分:0)
好吧,如果你试图在rails控制台中运行该命令,我认为这就是为什么它会给你这个错误,因为没有端口,我只是通过在我的布局中添加该行来本地测试它并且它工作正常