Apakah Nginx perlu dijalankan sebagai root?

By | July 5, 2019

Setelah dapat pertanyaan dari mas Hartono soal masalah di pemasangan Let’s Encryptnya yang error saya baru sadar masih banyak yang belum saya tahu. ? Asumsi saja kalau memang seperti itu caranya bagi hal sesederhana install Nginx + SSL yang sering saya lakukan. Ternyata teknisnya baru paham kemarin. Trims bagi pertanyaannya mas, menambah ilmu pun bikin saya. ?

Dari pesan error yang dicopaskan

nginx -t
nginx: [alert] could not open error log file: open() /var/log/nginx/error.log failed (13: Permission denied)
2017/01/19 09:09:51 [warn] 4037#4037: the user directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:1
2017/01/19 09:09:51 [emerg] 4037#4037: BIO_new_file(/etc/letsencrypt/live/mysite/fullchain.pem) failed (SSL: error:0200100D:system library:fopen:Permission denied:fopen('/etc/letsencrypt/live/mysite/fullchain.pem','r') error:2006D002:BIO routines:BIO_new_file:system lib)
nginx: configuration file /etc/nginx/nginx.conf test failed

Saya kira ini cuma masalah permission Linux lazim dimana di direktori Let’s Encrypt mungkin bukan gunakan nama dan grup nginx:nginx. Disinilah letak kesalahan saya, karena belum pernah ada masalah ketika menggunakan keduanya jadi asumsi saja.

Ya karena normalnya memang dimiliki oleh root:root, disini saya jadi penasaran dimana penyebabnya. ?

lrwxrwxrwx 1 root root 32 Jan  7 05:01 cert.pem -> ../../archive/mysite/cert1.pem
lrwxrwxrwx 1 root root 33 Jan 7 05:01 chain.pem -> ../../archive/mysite/chain1.pem
lrwxrwxrwx 1 root root 37 Jan 7 05:01 fullchain.pem -> ../../archive/mysite/fullchain1.pem
lrwxrwxrwx 1 root root 35 Jan 7 05:01 privkey.pem -> ../../archive/mysite/privkey1.pem

Dan memang dari komentar mas Hartono kalau gunakan root menjalankan Nginx tidaklah error, tapi gunakan user non-root jadi bermasalah. Baru saya ngeh… saya sendiri tak pernah tak gunakan root pas menjalankan proses web server Nginx. Haha. ?

Namun kalau baca isi nginx.conf kan ada konfigurasi bagi nanti gunakan user dan group apa. Jadi tidaklah salah asumsi mas Hartono (dan saya aslinya) kalau coba dijalankan seketika gunakan usernya.

Ya pas baca dokumentasinya di bagian ini baru tercerahkan kalau proses pertama-tama (master process) Nginx itu gunakan root, tapi pekerjanya (worker/child process) baru akan gunakan user dan group yang ditentukan. Jadi tak salah kalau gunakan root dan memang diinginkan semacam itu.

Oh ya, SELinux di CentOS mungkin berpengaruh pun kalau saya baca.

Ya.. sama – sama belajar jadinya. ?


Sumber https://servernesia.com