NGINX Redirect http to https and non-www to ww

前端 未结 4 1141
闹比i
闹比i 2020-11-29 23:43

I\'m setting up an nginx server with an SSL.

The domain with the ssl is www.mydomain.com

I want to redirect all requests from:

http://mydomain.com, h

相关标签:
4条回答
  • 2020-11-30 00:21

    The ssl redirect won't work if your ssl certificate doesn't support the non-www domain. The config is correct but can be reduced to just 1 redirect server

    Also don't forget to reload nginx sudo service nginx reload

    server {
      listen 80;
      listen 443 ssl;
      server_name example.com;
      # add ssl settings
      return 301 https://www.example.com$request_uri;
    }
    
    0 讨论(0)
  • 2020-11-30 00:26

    I am late, But you can do like this

    server{
      listen 443 ssl;
      server_name www.mydomain.com;
      root /www/mydomain.com/;
    
      ssl    on;
      ssl_certificate /ssl/domain.crt;
      ssl_certificate /ssl/domain.key;
      .
      . 
      .
    }
    
    server{
      listen 80;
      server_name www.mydomain.com mydomain.com;
      return 301 https://$server_name$request_uri;
    }
    
    server{
      listen 443;
      server_name mydomain.com;
      return 301 https://www.$server_name$request_uri;
    }
    

    Or you can replace return 301 https://www.$server_name$request_uri; with rewrite ^ http://www.$server_name$request_uri? permanent;, both will work.

    You also need to set this in google webmaster for better SEO.

    0 讨论(0)
  • 2020-11-30 00:33

    this works for me for http to https redirection,

    server {
        listen 80 default_server;
        listen [::]:80 default_server;
    
        root /var/www/html;
        index index.php index.html index.htm index.nginx-debian.html;
        server_name example.com;
    
        #For HTTP to HTTPS:
    
        proxy_set_header X-Forwarded-Proto $scheme;
        if ( $http_x_forwarded_proto != 'https' ) 
        {
            return 301 https://$host$request_uri;
        }
    
        location / {
            try_files $uri $uri/ /index.php;
            add_header 'Access-Control-Allow-Origin' '*';
        }
        
        location ~ \.php$ {
            include fastcgi.conf;   
            fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
        }
    
        
        location ~ /\.ht {
            deny all;
        }
    }
    

    thanks.

    0 讨论(0)
  • 2020-11-30 00:38
    #If you like to redirect all "http" to "https" then add the following:
    server {
            listen 80;
    
            server_name yourdomain.com;
            server_name www.yourdomain.com;
    
     if ($scheme = "http")
            {
                    rewrite ^(.*)$ https://yourdomain.com$1 permanent;
            }
    }
    
    0 讨论(0)
提交回复
热议问题