That won’t work because that default server block is ignored due there are other server blocks that match the hosts.
To modify this behaviour a change in Hestia code must be made but you have a workaround, you can disable the option Enable domain redirection on your domain settings and assign a new template that will do the right redirection.
If your current web template for Nginx is default…
…I will show you a template that you could use to do the redirection you want.
Now, to use the new template (keep in mind that this is an example and you can modify it) you must create 3 files in /usr/local/hestia/data/templates/web/nginx/php-fpm/
Now, edit the domain, disable the redirection and assign this new template and all should be working as expected… I hope so
Warning: I didn’t test it in a domain that doesn’t have already a certificate so it is possible to have some issues if you add the template to a domain that doesn’t have a certificate already, test it to be sure.
Following @eris tpl (thank you @eris), here are new versions to avoid using the remote_to_www.sh file:
Content of remote_to_www.tpl (is the same file @eris posted but I’ve replaced $host by %domain% to avoid that if you try to access http://www.example.com you would be redirected to https://www.www.example.com
server {
listen %ip%:%web_ssl_port% ssl;
server_name %domain_idn% %alias_idn%;
root %sdocroot%;
index index.php index.html index.htm;
access_log /var/log/nginx/domains/%domain%.log combined;
access_log /var/log/nginx/domains/%domain%.bytes bytes;
error_log /var/log/nginx/domains/%domain%.error.log error;
ssl_certificate %ssl_pem%;
ssl_certificate_key %ssl_key%;
ssl_stapling on;
ssl_stapling_verify on;
# TLS 1.3 0-RTT anti-replay
if ($anti_replay = 307) { return 307 https://$host$request_uri; }
if ($anti_replay = 425) { return 425; }
if ($host != "www.%domain%") {
return 301 https://www.%domain%$request_uri;
}
include %home%/%user%/conf/web/%domain%/nginx.hsts.conf*;
location ~ /\.(?!well-known\/) {
deny all;
return 404;
}
location / {
location ~* ^.+\.(jpeg|jpg|png|webp|gif|bmp|ico|svg|css|js)$ {
expires max;
fastcgi_hide_header "Set-Cookie";
}
location ~ [^/]\.php(/|$) {
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_index index.php;
fastcgi_param HTTP_EARLY_DATA $rfc_early_data if_not_empty;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass %backend_lsnr%;
include %home%/%user%/conf/web/%domain%/nginx.fastcgi_cache.conf*;
}
}
location /error/ {
alias %home%/%user%/web/%domain%/document_errors/;
}
location /vstats/ {
alias %home%/%user%/web/%domain%/stats/;
include %home%/%user%/web/%domain%/stats/auth.conf*;
}
proxy_hide_header Upgrade;
include /etc/nginx/conf.d/phpmyadmin.inc*;
include /etc/nginx/conf.d/phppgadmin.inc*;
include %home%/%user%/conf/web/%domain%/nginx.ssl.conf_*;
}
Regarding wordpress templates, take a look to wordpress.tlp and wordpress.stpl in /usr/local/hestia/data/templates/web/nginx/php-fpm/ and you will see that the changes for wordpress templates are basically the same.