Tuesday, March 8, 2016

[Linux] Konfigurasi Nginx sebagai Reverse Proxy untuk Apache

Alhamdulillah, setelah beberapa hari nyoba tentang cara konfigurasi Nginx sebagai reverse proxy dan Apache sebagai web servernya, akhirnya berhasil juga. Pada post ini akan mengulas secara singkat akan cara konfigurasi (sederhana) Nginx sebagai reverse proxy (frontend) dan Apache sebagai web servernya (backend) pada Debian 8. Pertama-tama, instal terlebih dahulu Apache dan PHP5:
apt-get install apache2 php5
ubah berkas porst.conf dan ganti port default apache menjadi 8080 (disesuaikan):
NameVirtualHost 127.0.0.1:8080
Listen 127.0.0.1:8080
Sesuaikan port VirtualHost pada setiap berkas yang ada di /etc/apache2/sites-available/ dengan konfigurasi di atas. Digantinya port Apache agar antara Nginx dan Apache tidak menggunakan port yang sama. Karena default setiap peramban ketika membuka suatu situs adalah port 80, maka semua layanan yang tertuju ke port itu diarahkan ke Nginx terlebih dahulu, baru bila permintaannya adalah berkas dinamis maka akan diproses oleh Apache. Selanjutnya buat berkas di /etc/nginx/sites-available/, contoh berkas ihik:
server {
    listen 80;
    root /var/www/;
    index index.php index.html index.htm;

    server_name ihik.com www.ihik.com;

    location ~ / {
        try_files $uri $uri/ /index.php;
    }

    location ~ \.php$ {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass http://127.0.0.1:8080;
    }

    location ~ /\.ht {
        deny all;
    }
}
lalu buat symbolic link untuk berkas ihik ke /etc/nginx/sites-enabled/ agar konfigurasi dapat diterapkan pada Nginx.
ln -s /etc/nginx/sites-available/ihik /etc/nginx/sites-enabled/ihik
Restart Nginx dan Apache.
service nginx restart && service apache2 restart
Terakhir, buat berkas index.php pada direktori /var/www/. isi dengan kode di bawah ini.

Tes menggunakan curl, apakah server sudah menggunakan Nginx sebagai frontend atau belum.


~$ curl -I http://ihik.com
HTTP/1.1 200 OK
Server: nginx/1.6.2
Berhasil, Nginx sudah digunakan sebagai frontend di server tersebut. Sekarang tes pada peramban, apakah akan memproses berkas dinamis (index.php). Bila berhasil akan tampil halaman mengenai info dari versi PHP yang sedang digunakan. VoilĂ ! \o/