December 10, 2018

Kustom Konfigurasi dan Ganti Direktori Nginx

Bermain Dengan Nginx

Pada saat ini sudah menjadi hal biasa jika seseorang ingin memindahkan file konfigurasinya agar lebih mudah dimaintenance. Salah satunya yaitu memidahkan direktori root html nginx. Di nginx, untuk memindahkan direktori root html dan memidahkan konfigurasinya cukup dengan command-command berikut.

Pada Lab ini saya asumsikan :

  • master konfigurasi berada di direktori /sibunglonlabs/config/nginx
  • direktori root berada di /sibunglonlabs/web

1) Gunakan command berikut untuk memindahkan master konfig nginx ke direktori yang anda ingin, yang mudah diakses oleh anda namun susah ditemui oleh orang lain. Saat ini master konfigurasi berada di /etc/nginx/conf.d/default.conf. Namun pada Red Hat Enterprise Linux, master konfigurasi berada di /etc/nginx/nginx.conf.

mv /etc/nginx/conf.d/default.conf /sibunglonlabs/config/nginx/sibunglonlabs.conf

  • Khusus penggunan Red Hat, cukup edit file masternya dan berikan pagar disetiap item yang bisa diinputkan pada konfig yang baru dan tambahkan sintaks include /etc/nginx/conf.d/*.conf yang akan meload semua file .conf pada /etc/nginx/conf.d, berikut saya lampirkan contoh konfigurasi master di RHEL yang telah diedit.
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
    worker_connections 768;
    # multi_accept on;
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ##
    # SSL Settings
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    ##
    # Logging Settings
    ##

    #access_log /var/log/nginx/access.log;
    #error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    gzip on;

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
}


#mail {
#    # See sample authentication script at:
#    # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
#    # auth_http localhost/auth.php;
#    # pop3_capabilities "TOP" "USER";
#    # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
#    server {
#        listen     localhost:110;
#        protocol   pop3;
#        proxy      on;
#    }
#
#    server {
#        listen     localhost:143;
#        protocol   imap;
#        proxy      on;
#    }
#}

2) Pindah ke direkori /sibunglonlabs/config/nginx/ dan edit file konfigurasi nginx yang

nano sibunglonlabs.conf

Untuk pengguna Red Hat Enterprise, karena sebelumnya tidak ada file yang dipindahkan maka kita cukup menambahkan sintaks yang sama yaitu nano sibunglonlabs.conf

3) Tambahkan sintaks berikut pada file sibunglonlabs.conf, script berikut juga termasuk memindahkan direktori root htmlnya

server {
   server_name localhost;
   listen 80;

   access_log  /var/log/nginx/access.log;
   error_log   /var/log/nginx/error.log  warn;

   location / {
       root   /sibunglonlabs/web; #direktori rootnya
        index  index.html index.htm;
    add_header Cache-Control no-cache;
   }

   error_page   500 502 503 504  /50x.html;
   location = /50x.html {
       root   /sibunglonlabs/web;
   }

}

4) Buat simbolik link file sibunglonlabs.conf ke direktori /etc/nginx/conf.d/

ln -sf /sibunglonlabs/conf/nginx/sibunglonlabs.conf /etc/nginx/conf.d/

5) Restart nginx, untuk menerapkan perubahan yang telah dilakukan.

6) Sekarang subdomain anda aktif, untuk menghindari error akses pastikan direktori root subdomain sudah berisi file index.html atau sejenisnya.

Tambahan

Jika nginx tidak bisa diakses oleh client setelah melakukan ini cukup set status selinux menjadi permissive dengan menggunakan command setenforce permissive.