SYSTEM INFORMATION | |
---|---|
OS type and version | Ubuntu 22.4.1, all latest packages |
Webmin version | 2.001 |
Virtualmin version | 7.2-1 Pro |
Related packages | nginx-core / nginx-full 1.18.0-6 |
Hi vm staff, hi community,
I experienced something strange while trying to restore a full backup of a virtual server, configured with nginx.
TLDR: the whole .conf for the particular nginx virtual server was messed up during restore by adding the full file path to the servers files to each and every variable’s name and also to their values.
Background story:
I run a Wordpress site on nginx and there were some updates available to the WP core as well as to some pugins. Beeing a good boy I did a full backup of the virtual server in Virtualmin, then updated the Wordpress items one at a time, plugins first to reach compatibility to latest core version, then finally the Wordpress core. Everythig looked fine first but a few hours later I noticed one important plugin was not working as expected without throwing errors but it simply disappeared from the site and backend. Time for a restore I thought.
Problem details:
During the restore process - it was restored over the existing virtual server - Virtualmin presented a warning regarding nginx conf file
Applying Nginx configuration ..
.. configuration is invalid : nginx: [warn] server name "/home/main-user/domains/sub.domain.desub.domain.de" has suspicious symbols in /etc/nginx/sites-enabled/sub.domain.de.conf:72 nginx: [warn] server name "/home/main-user/domains/sub.domain.dewww.sub.domain.de" has suspicious symbols in /etc/nginx/sites-enabled/sub.domain.de.conf:72 nginx: [emerg] invalid host in "/home/main-user/domains/sub.domain.de5.x.y.z" of the "listen" directive in /etc/nginx/sites-enabled/sub.domain.de.conf:73 nginx: configuration file /etc/nginx/nginx.conf test failed
Checking the file in Webmin - Server, Nginx Webserver - Edit Config Files I found this
server {
server_name /home/main-user/domains/sub.domain.desub.domain.de /home/main-user/domains/sub.domain.dewww.sub.domain.de;
listen /home/main-user/domains/sub.domain.de5.x.y.z;
listen /home/main-user/domains/sub.domain.de[xxxx:yyyy:zzzz:1300::1];
root /home/main-user/domains/sub.domain.de/home/main-user/domains/sub.domain.de/public_html;
index /home/main-user/domains/sub.domain.deindex.php
access_log /var/log/virtualmin/sub.domain.de_access_log;
error_log /var/log/virtualmin/sub.domain.de_error_log;
fastcgi_param /home/main-user/domains/sub.domain.deGATEWAY_INTERFACE CGI/1.1;
fastcgi_param /home/main-user/domains/sub.domain.deSERVER_SOFTWARE /home/main-user/domains/sub.domain.denginx;
fastcgi_param /home/main-user/domains/sub.domain.deQUERY_STRING "/home/main-user/domains/sub.domain.de$query_string";
fastcgi_param /home/main-user/domains/sub.domain.deREQUEST_METHOD "/home/main-user/domains/sub.domain.de$request_method";
fastcgi_param /home/main-user/domains/sub.domain.deCONTENT_TYPE "/home/main-user/domains/sub.domain.de$content_type";
fastcgi_param /home/main-user/domains/sub.domain.deCONTENT_LENGTH "/home/main-user/domains/sub.domain.de$content_length";
fastcgi_param /home/main-user/domains/sub.domain.deSCRIPT_FILENAME "/home/main-user/domains/sub.domain.de/home/main-user/domains/sub.domain.de/public_html$fastcgi_script_name";
fastcgi_param /home/main-user/domains/sub.domain.deSCRIPT_NAME "/home/main-user/domains/sub.domain.de$fastcgi_script_name";
fastcgi_param /home/main-user/domains/sub.domain.deREQUEST_URI "/home/main-user/domains/sub.domain.de$request_uri";
fastcgi_param /home/main-user/domains/sub.domain.deDOCUMENT_URI "/home/main-user/domains/sub.domain.de$document_uri";
fastcgi_param /home/main-user/domains/sub.domain.deDOCUMENT_ROOT /home/main-user/domains/sub.domain.de/home/main-user/domains/sub.domain.de/public_html;
fastcgi_param /home/main-user/domains/sub.domain.deSERVER_PROTOCOL "/home/main-user/domains/sub.domain.de$server_protocol";
fastcgi_param /home/main-user/domains/sub.domain.deREMOTE_ADDR "/home/main-user/domains/sub.domain.de$remote_addr";
fastcgi_param /home/main-user/domains/sub.domain.deREMOTE_PORT "/home/main-user/domains/sub.domain.de$remote_port";
fastcgi_param /home/main-user/domains/sub.domain.deSERVER_ADDR "/home/main-user/domains/sub.domain.de$server_addr";
fastcgi_param /home/main-user/domains/sub.domain.deSERVER_PORT "/home/main-user/domains/sub.domain.de$server_port";
fastcgi_param /home/main-user/domains/sub.domain.deSERVER_NAME "/home/main-user/domains/sub.domain.de$server_name";
fastcgi_param /home/main-user/domains/sub.domain.dePATH_INFO "/home/main-user/domains/sub.domain.de$fastcgi_path_info";
fastcgi_param /home/main-user/domains/sub.domain.deHTTPS "/home/main-user/domains/sub.domain.de$https";
location /home/main-user/domains/sub.domain.de^~ /home/main-user/domains/sub.domain.de/.well-known/ {
try_files "/home/main-user/domains/sub.domain.de$uri" /;
}
location /home/main-user/domains/sub.domain.de~ "/home/main-user/domains/sub.domain.de\.php(/|$)" {
try_files "/home/main-user/domains/sub.domain.de$uri" "/home/main-user/domains/sub.domain.de$fastcgi_script_name" /home/main-user/domains/sub.domain.de=404;
default_type /home/main-user/domains/sub.domain.deapplication/x-httpd-php;
fastcgi_pass /home/main-user/domains/sub.domain.deunix:/var/php-fpm/1666277054118380.sock;
}
fastcgi_split_path_info "/home/main-user/domains/sub.domain.de^(.+\.php)(/.+)$";
location /home/main-user/domains/sub.domain.de/cgi-bin/ {
gzip /home/main-user/domains/sub.domain.deoff;
root /home/main-user/domains/sub.domain.de/home/main-user/domains/sub.domain.de/cgi-bin;
fastcgi_pass /home/main-user/domains/sub.domain.deunix:/var/fcgiwrap/1666277054118380.sock/socket;
fastcgi_param /home/main-user/domains/sub.domain.deSCRIPT_FILENAME "/home/main-user/domains/sub.domain.de/home/main-user/domains/sub.domain.de$fastcgi_script_name";
fastcgi_param /home/main-user/domains/sub.domain.deGATEWAY_INTERFACE /home/main-user/domains/sub.domain.deCGI/1.1;
fastcgi_param /home/main-user/domains/sub.domain.deSERVER_SOFTWARE /home/main-user/domains/sub.domain.denginx;
fastcgi_param /home/main-user/domains/sub.domain.deQUERY_STRING "/home/main-user/domains/sub.domain.de$query_string";
fastcgi_param /home/main-user/domains/sub.domain.deREQUEST_METHOD "/home/main-user/domains/sub.domain.de$request_method";
fastcgi_param /home/main-user/domains/sub.domain.deCONTENT_TYPE "/home/main-user/domains/sub.domain.de$content_type";
fastcgi_param /home/main-user/domains/sub.domain.deCONTENT_LENGTH "/home/main-user/domains/sub.domain.de$content_length";
fastcgi_param /home/main-user/domains/sub.domain.deSCRIPT_NAME "/home/main-user/domains/sub.domain.de$fastcgi_script_name";
fastcgi_param /home/main-user/domains/sub.domain.deREQUEST_URI "/home/main-user/domains/sub.domain.de$request_uri";
fastcgi_param /home/main-user/domains/sub.domain.deDOCUMENT_URI "/home/main-user/domains/sub.domain.de$document_uri";
fastcgi_param /home/main-user/domains/sub.domain.deDOCUMENT_ROOT /home/main-user/domains/sub.domain.de/home/main-user/domains/sub.domain.de/public_html;
fastcgi_param /home/main-user/domains/sub.domain.deSERVER_PROTOCOL "/home/main-user/domains/sub.domain.de$server_protocol";
fastcgi_param /home/main-user/domains/sub.domain.deREMOTE_ADDR "/home/main-user/domains/sub.domain.de$remote_addr";
fastcgi_param /home/main-user/domains/sub.domain.deREMOTE_PORT "/home/main-user/domains/sub.domain.de$remote_port";
fastcgi_param /home/main-user/domains/sub.domain.deSERVER_ADDR "/home/main-user/domains/sub.domain.de$server_addr";
fastcgi_param /home/main-user/domains/sub.domain.deSERVER_PORT "/home/main-user/domains/sub.domain.de$server_port";
fastcgi_param /home/main-user/domains/sub.domain.deSERVER_NAME "/home/main-user/domains/sub.domain.de$server_name";
fastcgi_param /home/main-user/domains/sub.domain.dePATH_INFO "/home/main-user/domains/sub.domain.de$fastcgi_path_info";
fastcgi_param /home/main-user/domains/sub.domain.deHTTPS "/home/main-user/domains/sub.domain.de$https";
}
listen /home/main-user/domains/sub.domain.de5.x.y.z:443 /home/main-user/domains/sub.domain.dessl /home/main-user/domains/sub.domain.dehttp2;
listen /home/main-user/domains/sub.domain.de[xxxx:yyyy:zzzz:1300::1]:443 /home/main-user/domains/sub.domain.dessl /home/main-user/domains/sub.domain.dehttp2;
ssl_certificate /home/main-user/domains/sub.domain.de/etc/ssl/virtualmin/aerialsurveys.de/ssl.cert;
ssl_certificate_key /home/main-user/domains/sub.domain.de/etc/ssl/virtualmin/aerialsurveys.de/ssl.key;
if ("/home/main-user/domains/sub.domain.de$scheme" /home/main-user/domains/sub.domain.de= /home/main-user/domains/sub.domain.dehttp) {
rewrite /home/main-user/domains/sub.domain.de^/(?!.well-known)(.*) "/home/main-user/domains/sub.domain.dehttps://sub.domain.de/$1" /home/main-user/domains/sub.domain.debreak;
}
}
After seeing this I first thought about manually fixing the file but I finally ended up deleting and then again restoring the full virtual server and therafter everything was fine.
In my case the second attempt was a viable option because backup and restore were very close ion time together and the server is a test machine with very little use and only a few changes. But on a bigger installation is might not be so easy to delete and restore the whole thing so perhaps the process may need some investigation and probably some fixing.
Best regards,
Peter