Skip to main content

Missing /etc/nginx folder

Not entirely sure how this might have happened, but I once SSHed into onone of my servers to find out that the entire /etc/nginx folder has dissapeared. I tried looking elsewhere or using locate, but the configuration folder was nowhere to be found. Just like that the /var/log/nginx folder has dissapeared as well. It might have happened during an upgrade, but after some thorough searching, I still couldn't figure out when or why it happened.

Strangely, all services (websites) using Nginx were running fine and the entire service was active and running as well, still happily pointing to the non-existent config file:

$ systemctl status nginx
● nginx.service - nginx - high performance web server
     Loaded: loaded (/lib/systemd/system/nginx.service; disabled; vendor preset: enabled)
    Drop-In: /etc/systemd/system/nginx.service.d
             └─override.conf
     Active: active (running) since Wed 2021-09-15 21:40:43 CEST; 3 days ago
       Docs: https://nginx.org/en/docs/
   Main PID: 98 (nginx)
        CPU: 20.643s
     CGroup: /system.slice/nginx.service
             ├─ 98 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
             └─101 nginx: worker process

Sep 15 21:40:43 hostname systemd[1]: Starting nginx - high performance web server...
Sep 15 21:40:43 hostname systemd[1]: Started nginx - high performance web server.
$ cd /etc/nginx
-bash: cd: /etc/nginx: No such file or directory

However, if the server or Nginx randomly restarted, it wouldn't be able to start again and all hell would break loose.

Fortunately, I have backed up my config file, which is really the only thing that matters, the rest can be rebuilt.

Stop Nginx
$ sudo systemctl stop nginx

Try to restart it, and just like I expected:

$ sudo systemctl restart nginx
Job for nginx.service failed because the control process exited with error code.
See "systemctl status nginx.service" and "journalctl -xe" for details.

$ sudo systemctl status nginx
● nginx.service - nginx - high performance web server
     Loaded: loaded (/lib/systemd/system/nginx.service; disabled; vendor preset: enabled)
    Drop-In: /etc/systemd/system/nginx.service.d
             └─override.conf
     Active: failed (Result: exit-code) since Sun 2021-09-19 16:25:01 CEST; 5s ago
       Docs: https://nginx.org/en/docs/
    Process: 22419 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=1/FAILURE)
        CPU: 11ms

Sep 19 16:25:01 hostname systemd[1]: Starting nginx - high performance web server...
Sep 19 16:25:01 hostname nginx[22419]: nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" fa>
Sep 19 16:25:01 hostname nginx[22419]: 2021/09/19 16:25:01 [emerg] 22419#22419: open() "/etc/nginx/nginx.conf" failed (2:>
Sep 19 16:25:01 hostname systemd[1]: nginx.service: Control process exited, code=exited, status=1/FAILURE
Sep 19 16:25:01 hostname systemd[1]: nginx.service: Failed with result 'exit-code'.
Sep 19 16:25:01 hostname systemd[1]: Failed to start nginx - high performance web server.
Uninstall and reinstall Nginx

 

$ sudo apt purge nginx*
$ sudo apt install nginx
Fix configuration

Navigate to /etc/nginx/conf.d and rename the config file like before.

$ cd /etc/nginx/conf.d
$ sudo mv default.conf proxy.conf

I'm copying the config through SSH session, so just $ sudo vi proxy.conf and Shift+Ins and Esc and ZZ to save and quit.

Test config, final fixes

Test the configurationconfiguration:

$ sudo nginx -t

nginx: [emerg] BIO_new_file("/etc/nginx/dhparam.pem") failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/etc/nginx/dhparam.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file)
nginx: configuration file /etc/nginx/nginx.conf test failed

Together with the config folder, my dhparam.pem file was also deleted, so we have to generate it again.

Generate secure dhparam.pem.pem. This will take a loooooong time, especially on VPSes with a single core like in my case.

$ openssl dhparam -out dhparam.pem 4096

 Test config again, it should be fine now:

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

 Restart the service and check status to see if everything is working.

 

$ 

 

sudo

 

systemctl

 

restart

 

 

nginx