Gar*_*ett 4 port ruby-on-rails nginx varnish
我有一个在端口8080
上运行的Rails应用程序,我需要欺骗它认为它在端口80上运行.
我在端口上运行Varnish 80
并将请求转发到端口上的nginx 8080
,但是当用户尝试使用OmniAuth登录并且Devise gem生成一个URL以重定向回服务器时,它认为它在端口8080上然后用户将看到.
有没有办法欺骗Rails应用程序将端口硬编码为80(我认为这是一个不好的做法),或者让nginx转发请求,就好像它在端口80上运行一样?
由于我没有在Rails应用程序上运行nginx代理,所以我想不出一种欺骗端口的方法.
有没有人之前遇到过这个问题,如果有的话需要什么样的配置才能修复它?
提前致谢!
编辑:nginx和Varnish都在同一台服务器上运行.
我在端口80上使用Varnish,在端口8080上使用nginx,而OmniAuth(没有设计)的设置完全相同.我尝试X-Forwarded-Port
在Varnish和fastcgi_param SERVER_PORT 80;
nginx中设置等,两者都没有成功.我的设置中的另一件是乘客(你没有提到),但如果你确实使用了乘客,那么你可以使用:
passenger_set_cgi_param SERVER_PORT 80;
Run Code Online (Sandbox Code Playgroud)
(文档说你可以在一个http
块中设置它,但这对我不起作用,我不得不将它添加到server
块中.)
http://modrails.com/documentation/Users%20guide%20Nginx.html#passenger_set_cgi_param
归档时间: |
|
查看次数: |
2443 次 |
最近记录: |