Nginx & certbot www not working (but https://www does)

February 15, 2019 657 views
Ubuntu 18.04 Nginx

I have this in /etc/nginx/sites-available/example.com

server {

    root /var/www/html;
    index index.php index.html index.htm;

    # Make site accessible from http://localhost/
    server_name example.com www.example.com;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ /index.php?$query_string;
        # 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$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
    }
    location /xxx {
        try_files $uri $uri/ =404;
        auth_basic "Restricted Content";
        auth_basic_user_file /etc/nginx/.htpasswd;
    allow ip.x.x.x.x;
    deny all;
    }
    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
        deny all;
    }

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/example.com/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 = www.example.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    if ($host = example.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;
    server_name example.com www.example.com;
    return 404; # managed by Certbot

}

The http://example.com redirects to https://example.com (if I write example.com in browser it goes to https://example.com)
The https://www.example.com works as well
The http://www.example.com is returning “This site can’t be reached”

In the DigitalOcean domains I have:
CNAME www.example.com is an alias of example.com 43200
A example.com directs to ipx.x.x.x 3600

What am I doing wrong why is www.example.com not redirecting to https://www.example.com.

Also I cannot figure out how to redirect both example.com, https://example.com and www.example.com to https://www.example.com

1 Answer

Solved, http traffic was blocked by firewall. My mistake.

Have another answer? Share your knowledge.