1. Download nginx dari web resminya
2. Install build-essential
3. Install libpcre3 libpcre3-dev libpcrecpp0 libssl-dev zlib1g-dev
4. Extract nginx
5. Edit pada folder src/html filenya tepatnya saya lupa yang penting ada kata header nya. Yang diubah adalah string headernya.
6. Compile dengan konfigurasi contoh berikut ini:
./configure
--prefix=/var/www
--sbin-path=/usr/sbin/nginx
--conf-path=/etc/nginx/nginx.conf
--pid-path=/var/run/nginx.pid
--lock-path=/var/lock/nginx.lock
--error-log-path=/var/log/nginx/error.log
--http-log-path=/var/log/nginx/access.log
--user=www-data
--group=www-data
--without-mail_pop3_module
--without-mail_imap_module
--without-mail_smtp_module
--without-http_uwsgi_module
--without-http_scgi_module
--with-ipv6
--with-http_stub_status_module
--with-http_gzip_static_module
#make
#make install
7. Buat init.d [/etc/init.d/nginx]
#! /bin/sh
### BEGIN INIT INFO
# Provides: nginx
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts the nginx web server
# Description: starts nginx using start-stop-daemon
### END INIT INFO
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/nginx
NAME=nginx
DESC=nginx
test -x $DAEMON || exit 0
# Include nginx defaults if available
if [ -f /etc/default/nginx ] ; then
. /etc/default/nginx
fi
set -e
. /lib/lsb/init-functions
case "$1" in
start)
echo -n "Starting $DESC: "
start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid
--exec $DAEMON -- $DAEMON_OPTS || true
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid
--exec $DAEMON || true
echo "$NAME."
;;
restart|force-reload)
echo -n "Restarting $DESC: "
start-stop-daemon --stop --quiet --pidfile
/var/run/$NAME.pid --exec $DAEMON || true
sleep 1
start-stop-daemon --start --quiet --pidfile
/var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS || true
echo "$NAME."
;;
reload)
echo -n "Reloading $DESC configuration: "
start-stop-daemon --stop --signal HUP --quiet --pidfile /var/run/$NAME.pid
--exec $DAEMON || true
echo "$NAME."
;;
status)
status_of_proc -p /var/run/$NAME.pid "$DAEMON" nginx && exit 0 || exit $?
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|reload|force-reload|status}" >&2
exit 1
;;
esac
exit 0
# chmod +x /etc/init.d/nginx
# update-rc.d -f nginx defaults
8. Configurasi nginx di /etc/nginx/nginx.conf
user www-data;
worker_processes 2; #sesuaikan dengan core cpu anda
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 2048; #jumlah target client = worker_connections*worker_processes
}
http {
include 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 logs/access.log main;
sendfile on;
tcp_nopush on;
keepalive_timeout 15;
gzip on;
gzip_disable msie6;
gzip_types text/plain text/css application/javascript;
gzip_vary on;
gzip_comp_level 2;
#client_max_body_size 3M;
include /etc/nginx/sites-enabled/*;
}
9. Membuat modul sesuai keperluan vhost
/etc/nginx/sites-module/common.conf
# Global configuration file.
# ESSENTIAL : Configure Nginx Listening Port
listen 80;
listen [::]:80; # jika ingin mengaktifkan ipv6
# ESSENTIAL : Default file to serve. If the first file isn't found,
index index.php index.html index.htm;
# ESSENTIAL : no favicon logs
location = /favicon.ico {
log_not_found off;
access_log off;
}
# ESSENTIAL : robots.txt
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
# ESSENTIAL : Configure 404 Pages
error_page 404 /404.html;
# ESSENTIAL : Configure 50x Pages
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/html;
}
# SECURITY : Deny all attempts to access hidden files .abcde
location ~ /. {
deny all;
}
# PERFORMANCE : Set expires headers for static files and turn off logging.
location ~* ^.+.(js|css|swf|ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
access_log off; log_not_found off; expires 30d;
}
/etc/nginx/sites-module/wordpress.conf
# WORDPRESS : Rewrite rules, sends everything through index.php and keeps the appended query string intact
location / {
try_files $uri $uri/ /index.php?q=$uri&$args;
}
# SECURITY : Deny all attempts to access PHP Files in the uploads directory
location ~* /(?:uploads|files)/.*.php$ {
deny all;
}
# REQUIREMENTS : Enable PHP Support
location ~ .php$ {
# SECURITY : Zero day Exploit Protection
try_files $uri =404;
# ENABLE : Enable PHP, listen fpm sock
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
}
# PLUGINS : Enable Rewrite Rules for Yoast SEO SiteMap
rewrite ^/sitemap_index.xml$ /index.php?sitemap=1 last;
rewrite ^/([^/]+?)-sitemap([0-9]+)?.xml$ /index.php?sitemap=$1&sitemap_n=$2 last;
10. Membuat virtualhost, buat file pada direktori /etc/nginx/sites-available kemudian buat ln -s ke sites-enabled
server {
listen 80 default_server;
listen [::]:80 default_server;
rewrite ^/(.*)$ https://www.muhammadhernawan.com/$1 permanent;
}
server {
server_name muhammadhernawan.com www.muhammadhernawan.com;
root /home/muhammadhernawan/public_html/www;
error_log /var/log/nginx/www.muhammadhernawan.com.error.log;
access_log off;
include /etc/nginx/sites-module/common.conf;
include /etc/nginx/sites-module/wordpress.conf;
}
server {
server_name mail.muhammadhernawan.com;
root /var/www/mail;
error_log /var/log/nginx/mail.muhammadhernawan.com.error.log;
include /etc/nginx/sites-module/common.conf;
include /etc/nginx/sites-module/wordpress.conf;
}
11. Setting fastcgi_params tambahkan
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
selenjutnya saya akan share php server (php5-fpm) dan mariadb (sql).
Bukan Pakar SEO