title: Nginx server : Redirecting www, ip and non-ssl
body: <p>I have been struggling with my Nginx server's .conf file. I am getting a redirection loop error while trying to redirect these urls :</p>
  
  <pre><code>http://example.com
  http://www.example.com
  https://www.example.com
  http://11.111.11.11
  https://11.111.11.11
  </code></pre>
  
  <p>to : <code>https://example.com</code>  </p>
  
  <p>So what I am trying to do is to redirect every non-ssl url, www prefixed url and my server's ip address to my domain name.
  Here is my code :</p>
  
  <pre><code># redirect ip to domain name
  server {
      listen               80;
      listen               443 ssl;
      server_name          11.111.11.11; #server_ip
      ssl_certificate      /etc/letsencrypt/live/mydomain.com/fullchain.pem;
      ssl_certificate_key  /etc/letsencrypt/live/mydomain.com/privkey.pem;
  
      return 301 $scheme://mydomain.com$request_uri;
  }
  
  # HTTP — redirect all traffic to HTTPS
  server {
      listen               80;
      listen               443 ssl;
      server_name          www.mydomain.com;
      ssl_certificate      /etc/letsencrypt/live/mydomain.com/fullchain.pem;
      ssl_certificate_key  /etc/letsencrypt/live/mydomain.com/privkey.pem;
  
      return 301 $scheme://mydomain.com$request_uri;
  }
  
  # HTTPS — proxy all requests to the Node app
  server {
      # Enable HTTP/2
      listen 443 ssl http2;
      listen [::]:443 ssl http2;
      server_name mydomain.com;
  
      # Use the Let’s Encrypt certificates
      ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem;
      ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem;
  
      # Include the SSL configuration from cipherli.st
      include snippets/ssl-params.conf;
  
      location / {
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header X-NginX-Proxy true;
          proxy_pass http://localhost:5000/;
          proxy_ssl_session_reuse off;
          proxy_set_header Host $http_host;
          proxy_cache_bypass $http_upgrade;
          proxy_redirect off;
      }
  }
  </code></pre>