I have the following nginx configuration fragment:
server {
listen 80;
server_name mydomain.io;
root /srv/www/domains/mydomain.io;
index index
I believe it's better to add two seperate server blocks to avoid unnecessary checking by the if block. I also use the $scheme variable so that HTTPS requests will not be redirected to their insecure counterparts.
server {
listen 80;
server_name www.mydomain.io;
rewrite ^ $scheme://mydomain.io$uri permanent;
}
server {
listen 80;
server_name mydomain.io;
# your normal server block definitions here
}