Nginx, sudah ada di dalam repository linux, baik berbasis Redhat, Debian, Ubuntu, dan lain sebagainya. Dapat juga dilakukan instalasi secara custom dari source code. Untuk instalasi secara repository, dapat dilakukan demikian :
yum install nginx
apt-get install nginx
zypper install nginx
dan lain sebagainya.
Untuk instalasi secara source code, dapat dilakukan hal berikut ini :
1. download source-code : http://nginx.org/en/download.html
2. extract : tar -xzvf nginx
3. configure kompilasi : cd nginx; ./configure –prefix=/opt/nginx
4. kompilasi : make && make install
Untuk nginx berbasis repository, dapat langsung distart :
/etc/init.d/nginx start
Atau
service nginx start
Untuk menghentikannya, dilakukan dengan cara mengganti kata start dengan stop. Untuk yang berasal dari kompilasi sourcecode, dapat dilakukan seperti berikut:
/opt/nginx/sbin/nginx
Sedangkan mematikannya dapat dengan
killall -9 nginx
Untuk memastikan apakah nginx hidup atau mati dapat dilakukan dengan :
ps ax | grep nginx
Konfigurasi nginx cukup mudah. Bagi yang telah terbiasa dengan konfigurasi apache, tentu tidak akan sulit melakukan konfigurasi nginx. Ada sedikit perbedaan sintaks konfigurasi, namun masih mudah untuk diikuti. Nginx, dalam operasionalnya akan dipanggil dengan nama panggil atau domain atau yang disebut dengan server name. Lokasi file konfigurasi nginx berada di :
/etc/nginx/nginx.conf
atau ada di
/opt/nginx/nginx.conf
Konfigurasi yang paling perlu diperhatikan adalah pada bagian :
http { include /etc/nginx/mime.types; access_log /var/log/nginx/access.log; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; tcp_nodelay on; gzip on; gzip_disable "MSIE [1-6]\.(?!.*SV1)"; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; }
Dengan bagian
include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*;
Adalah bagian yang digunakan untuk memuat konfigurasi modul dan konfigurasi virtualhost. Tentang virtualhost dapat dilihat pada bagian sebelumnya.
Pengaturan virtualHost dapat dilakukan dengan melakukan penambahan file pada /etc/nginx/sites-enabled/ seperti berikut ini:
ls /etc/nginx/sites-enabled/ bimosaurus.com.conf blog.bimosaurus.com.conf blog2.bimosaurus.com.conf
Isi tiap filenya kurang lebih akan sebagai berikut.
server { listen 80; server_name bimosaurus.com www.bimosaurus.com; acccess_log /var/log/nginx/bimosaurus.com_access_log; location / { root /home/bimosaurus/public_html index index.php index.html index.htm; } }
Hal tersebut berfungsi jika nginx akan digunakan sebagai web server murni yang akan membuka dokumen yang berada di direktori /home/bimosaurus/public_html dibuka sebagai bimosaurus.com. Namun nginx juga dapat difungsikan sebagai Reverse Proxy, yaitu sebuah webserver depan (proxy depan) yang mengambil resource web yang ada di belakangnya. Biasanya model reverse proxy ini digunakan untuk web-web yang memiliki static content sangat besar dan memiliki beban tarik sangat tinggi. Nginx akan melakukan penyimpanan content-content static dalam fungsi proxynya.
server { listen 222.122.221.121:80; server_name bimosaurus.com www.bimosaurus.com; access_log /var/log/nginx/bimosaurus.com.access.log; error_log /var/log/nginx/bimosaurus.com.error.log; location /doc { root /usr/share; autoindex on; allow 127.0.0.1; deny all; } location ^~ /(images|css|js) { root /home/bimo/public_html/bimosaurus.com; access_log /var/log/nginx/bimosaurus.com.direct.log ; } location ~* \.(js|css|rdf|xml|ico|txt|gif|jpg|png|jpeg)$ { root /home/bimosaurus/public_html/; access_log /var/log/nginx/bimosaurus.com.direct.log; } location / { proxy_pass http://127.0.0.1:80; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_size 512k; proxy_connect_timeout 900; proxy_send_timeout 900; proxy_read_timeout 900; proxy_buffer_size 254k; proxy_buffers 8 64k; proxy_busy_buffers_size 256k; proxy_temp_file_write_size 256k; } }
Dalam contoh diatas, saya mengalihkan panggilan bimosaurus.com, akan saya ambilkan sourcenya dari http://127.0.0.1:80, dari satu mesin yang sama, namun dengan listen IP Address yang berbeda. Adapun ada bagian tengah yang saya fungsikan untuk mengambil secara langsung direct access mengambil konten-konten statik. Syarat bisa hidup dua port 80 pada satu mesin adalah, tidak boleh memiliki IP Listen yang sama.
Jadi pada bagian /etc/nginx/nginx.conf bagian listen dihapus seperti berikut:
user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; gzip on; include /etc/nginx/conf.d/*.conf; server_tokens Off; }
Dan pada bagian apache, Listen diarahkan ke 127.0.0.1. Yaitu pada file /etc/httpd/conf/httpd.conf
Listen 127.0.0.1:80
Dan pada virtualHost dimasukkan sebagai berikut
ServerName bimosaurus.com
ServerAlias www.bimosaurus.com
DocumentRoot /home/bimosaurus/public_html
Untuk pengaturan Apache dapat dilihat pada https://blogit.bimosaurus.com/2015/06/13/flash-back-virtualhost-apache-dan-nginx/
Masalah listen address, silakan melihat pada bagian berikut : https://blogit.bimosaurus.com/2015/02/16/konsep-listen-dalam-network-service/, pastikan selalu menggunakan netstat -tapn untuk dapat melihat port dan IP Address yang menyala.
terima kasih mas Bimo untuk penjelasannya.