Rails redirect_to重定向到https:// subdomain

时间:2018-09-19 01:18:45

标签: ruby-on-rails ssl nginx subdomain cloudflare

我只是在我的网站上设置了cloudflare ssl,现在无论何时在Rails中调用redirect_to @thing时,客户端都会重定向到https://subdomain/thing/1而不是https://subdomain.domain.com/thing/1。现在不确定是否已设置ssl,是否需要更改cloudflare A记录,因为我在CNAME | subdomain | host之前拥有的A记录不再起作用。如果需要更多信息,请告诉我!

像这样rails s -p 3000 -b0.0.0.0 -e production

启动了Rails服务器

DNS记录是 CNAME | subdomain | host A | domain | serverip A | www | serverip

rails服务器在serverip:3000上运行,nginx正在将具有特定子域的所有流量路由到该端口。如果一切都使用serverip:3000完成,则没有重定向问题,但是当我使用subdomain.domain.com执行操作时,重定向问题再次出现

nginx配置 ```

server {
    listen 80;
    server_name subdomain.domain.com;
    location / {
        proxy_pass http://subdomain;
    }
}

upstream subdomain {
    server 127.0.0.1:3000;
}

```

1 个答案:

答案 0 :(得分:0)

您可以添加以下更改routes.rb

constraints subdomain: false do
  get ':any', to: redirect(subdomain: 'www', path: '/%{any}'), any: /.*/
end

您可以将顶级域的数量设置为子域的参数,例如:

>> app.get('http://www.localhost')
>> app.request.subdomain
=> "" 
>> app.request.subdomain(0)
=> "www" 

这也可以在环境文件中设置:

# config/environments/development.rb
config.action_dispatch.tld_length = 0