Apakah Nginx perlu dijalankan sebagai root?

Setelah dapat pertanyaan dari mas Hartono soal masalah pada pemasangan Let’s Encryptnya yang error saya baru sadar masih banyak yang belum saya tahu. 😀 Asumsi saja kalau memang seperti itu caranya untuk hal sesederhana install Nginx + SSL yang sering saya lakukan. Ternyata teknisnya baru paham kemarin. Trims untuk pertanyaannya mas, menambah ilmu juga buat 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 biasa dimana pada direktori Let’s Encrypt mungkin bukan pakai nama dan grup nginx:nginx. Disinilah letak kesalahan saya, karena belum pernah ada masalah saat 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 pakai root menjalankan Nginx tidaklah error, tapi pakai user non-root jadi bermasalah. Baru saya ngeh… saya sendiri tidak pernah tidak pakai root pas menjalankan proses web server Nginx. Haha. 😀

Tapi kalau baca isi nginx.conf kan ada konfigurasi untuk nanti pakai user dan group apa. Jadi tidaklah salah asumsi mas Hartono (dan saya aslinya) kalau coba dijalankan langsung pakai usernya.

Ya pas baca dokumentasinya di bagian ini baru tercerahkan kalau proses pertama (master process) Nginx itu pakai root, tapi pekerjanya (worker/child process) baru akan pakai user dan group yang ditentukan. Jadi tidak salah kalau pakai root dan memang diharapkan begitu.

Oh ya, SELinux pada CentOS mungkin berpengaruh juga kalau saya baca.

Ya.. sama – sama belajar jadinya. 😀

4 pemikiran pada “Apakah Nginx perlu dijalankan sebagai root?

  1. Halo mas, maaf gak kirim email, mungkin lewat komen aja yak pertanyaannya :v
    Hahaha..

    Pertanyaan ini sebenernya berhubungan dengan optimize page speed site dari sisi konfigurasi nginx.

    Untuk masalah leverage browser caching 3rd party sama gzip compression 3rd party. Apakah memang harus menggunakan cron atau ada cara lain?
    Soalnya banyak juga nih js ataupun file lain dari 3rd party. Apalagi kalo ada iklannya. Jadi agak gimana gitu speed nya.

    Hahahaha..

    Moga ada jawabannya. sukur2 kalo di buatin post nya 😀

    • Memang lebih baik lewat komentar mas, lebih sering saya buka dan balasnya lebih enak ngetik disini daripada lewat email. 😀

      Mas bisa copaskan kodenya seperti apa? Kok butuh cron? 3rd party ini berarti script yang direferensikan pada website akan diambil dan dicache lokal? Saya antara paham ga paham mas kalau ini. Haha. 😀

      Kode leverage browser caching dan gzipnya silahkan dicopas mas, biar lengkap dan saya bisa ikuti alurnya mau ngapain.

      • Jadi gini mas, contoh nihh..
        Aku punya blog, dan aku pasangin histats, adsense, google analytic.
        Nah, itu kan ada JS third party pastinya.

        Nah, aku pengennya di taruh local gitu.
        Permasalahannya adalah, takutnya JS tersebut bersifat dynamic. Mangkannya perlu cron atau enggak 😀

        Coba deh tes beberapa website menggunakan gtmetrix, nanti akan keliatan. Terutama yang pakai ads.

      • Oalah… saya paham mas. Dulu saya pernah berusaha melokalkan semuanya, tapi saat itu ga ketemu solusi yang sudah jadi untuk itu. Apalagi khusus untuk script tracking dan iklan sangat tidak disarankan dihost ulang karena masa expire sangat singkat (1 jam biasanya).

Tinggalkan komentar