title: Nginx redirect www domain to non-www
body: <p>I want <a href="http://www.example.app" rel="nofollow noreferrer">www.example.app</a> to go to example.app for SEO, and I followed several tutorials and problem solutions but can't seem to get it working.</p>
  <p>I added a separate server block that redirects to the non-www domain and restarted nginx several times, also accessing my site from an incognito window.</p>
  <p>Here is my <code> /etc/nginx/sites-available/default</code>
  configuration file.</p>
  <p>Any help would be appreciated!</p>
  <pre><code>server {
      server_name www.example.app;
      return 301 $scheme://example.app$request_uri;
  }
  
  server {
      listen 80;
      listen [::]:80;
  
  
      root /var/www/html/;
  
      index index.php index.html index.htm index.nginx-debian.html;
  
      server_name exampe.app;
  
      location / {
          try_files $uri $uri/ =404;
      }
      
      location ~*  \.(jpg|jpeg|png|gif|ico|css|js)$ {
              expires 365d;
          }
  
          location ~*  \.(pdf)$ {
              expires 30d;
          }
  
      location ~ \.php$ {
          include snippets/fastcgi-php.conf;
          fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
      }
  
      location ~ /\.ht {
       deny all;
      }
  
      error_page 404 /customerror_404.html;
      location = /customerror_404.html {
          root /usr/shar/nginx/html;
          internal;
      }
      
  }
  
  
  server {
      root /var/www/html/;
      index index.php index.html index.htm index.nginx-debian.html;
      server_name example.app; # managed by Certbot
  
  
      location / {
          try_files $uri $uri/ =404;
      }
  
      location ~ \.php$ {
          include snippets/fastcgi-php.conf;
          fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
      }
  
      location ~ /\.ht {
          deny all;
      }
  
  
      listen [::]:443 ssl ipv6only=on; # managed by Certbot
      listen 443 ssl; # managed by Certbot
      ssl_certificate /etc/letsencrypt/live/example.app/fullchain.pem; # managed by Certbot
      ssl_certificate_key /etc/letsencrypt/live/example.app/privkey.pem; # managed by Certbot
      include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
      ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
  
  }
  
  
  server {
      if ($host = example.app) {
          return 301 https://$host$request_uri;
      } # managed by Certbot
  
  
      listen 80 ;
      listen [::]:80 ;
      server_name example.app;
      return 404; # managed by Certbot
  
  }
  
  </code></pre>