将https从非www重定向到www

时间:2016-02-24 04:48:07

标签: ruby-on-rails ruby amazon-web-services nginx

以下是我的Nginx服务器配置(不工作)。我需要将https非www重定向到www。因此,当我访问网站https://example.com时,它应该将我重定向到https://www.example.com

server {
    listen 443 ssl
    server_name example.com;
    return 301 https://www.example.com$request_uri;
}

编辑: 我的负载均衡器: enter image description here

我正在使用在AWS中运行Ruby on Rails应用程序的AMI Linux。谢谢!

2 个答案:

答案 0 :(得分:3)

请在您的nginx.conf文件中使用以下配置。它对我来说很好。

server {
       listen         80;
       server_name    www.example.com example.com;

       location / {
            index       index.html;
            root        /usr/share/nginx/html;  #the location of your app folder
       }


        if ($http_x_forwarded_proto = 'http') {
            return 301 https://www.example.com$request_uri;
        }

}

答案 1 :(得分:0)

如果您只想重定向GET请求并为非GET请求抛出405(Method not allowed):

server {
  listen 443 ssl;
  server_name example.com;
  if ($request_method = GET) {
    return 301 https://www.example.com$request_uri;
  }
  return 405;
}

server {
  listen 443 ssl;
  server_name www.example.com;

  # locations
}

如果您希望重定向所有请求(GET,POST,...),这是不可能的,我建议您尝试使用Akshath的方法。