title: nginx Redirect non-www to www and https
body: <p>Here is my code for my nginx configuration:</p>
  
  <pre><code>server {
      listen 80;
      server_name example.com www.example.com;
      return 301 https://www.example.com$request_uri;
  }
  
  server {
      listen 443 ssl;
      server_name example.com;
      ssl_certificate /etc/ssl/example.com.crt;
      ssl_certificate_key /etc/ssl/example.com.key;
      return 301 https://www.example.com$request_uri;
  }
  
  
  server {
      listen 443 ssl;
      server_name www.example.com;
      ssl_certificate /etc/ssl/example.com.crt;
      ssl_certificate_key /etc/ssl/example.com.key;
  
      root /usr/share/nginx/html;
      index index.php index.html index.htm;
  
      location / {
          # First attempt to serve request as file, then
          # as directory, then fall back to displaying a 404.
          try_files $uri $uri/ =404;
          # Uncomment to enable naxsi on this location
          # include /etc/nginx/naxsi.rules
      }
  
      error_page 404 /404.html;
      error_page 500 502 503 504 /50x.html;
      location = /50x.html {
          root /usr/share/nginx/html;
      }
  
      location ~ \.php$ {
          try_files $uri =404;
          fastcgi_split_path_info ^(.+\.php)(/.+)$;
          fastcgi_pass unix:/var/run/php5-fpm.sock;
          fastcgi_index index.php;
          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
          include fastcgi_params;
      }
  
      # Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests
      #location /RequestDenied {
      #   proxy_pass http://127.0.0.1:8080;    
      #}
  
      #error_page 404 /404.html;
  
      # redirect server error pages to the static page /50x.html
      #
      #error_page 500 502 503 504 /50x.html;
      #location = /50x.html {
      #   root /usr/share/nginx/html;
      #}
  
      # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
      #
      #location ~ \.php$ {
      #   fastcgi_split_path_info ^(.+\.php)(/.+)$;
      #   # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
      #
      #   # With php5-cgi alone:
      #   fastcgi_pass 127.0.0.1:9000;
      #   # With php5-fpm:
      #   fastcgi_pass unix:/var/run/php5-fpm.sock;
      #   fastcgi_index index.php;
      #   include fastcgi_params;
      #}
  
      # deny access to .htaccess files, if Apache's document root
      # concurs with nginx's one
      #
      #location ~ /\.ht {
      #   deny all;
      #}
  }
  </code></pre>
  
  <p>here is what im trying to do:</p>
  
  <ul>
  <li>force non-www to www</li>
  <li>force http to https</li>
  <li>the final result will be <a href="https://www.example.com" rel="nofollow">https://www.example.com</a></li>
  </ul>
  
  <p>i put it in my default file for configuration and it does not work. the error I get is that the redirect is not redirecting properly. can someone please help? thanks!!!</p>