Implementasi

Implementasi Nginx dengan Apache Backend

Tanggal 02 Sep 2011
Kategori : Pengelolaan Server Linux
Tag : , ,

Utilisasi Web Server Nginx yang sangat tangguh mengatasi konten statik seperti file gambar dapat dilakukan dengan tetap menggunaan Apache sebagai backend yang menhandle semua request lain. Dengan demikian kita tetap bisa menggunakan rewrite dari Apache tanpa harus melakukan modifikasi di file konfigurasi Nginx.

Artikel ini akan memberikan panduan untuk melakukan implementasi Nginx Frontend dengan Apache Backend, pada tahapan ini diasumsikan bahwa anda telah dapat melakukan instalasi dan konfigurasi awal baik untuk Nginx maupun untuk Apache.

Artikel ini dilakukan pada server CentOS 64 bit, apabila anda menggunakan server dengan distribusi yang berbeda, harap diperhatikan perbedaan path dan perintah.

Setup

Nginx akan melayani request http terhadap domain terkait, dengan demikian entry pada Name Server diarahkan ke IP Address yang disetup di Virtual Host Nginx. Pada contoh kasus di artikel ini, konfigurasi virtual host nginx akan menggunakan ip publik dengan port 80, sementara apache akan menggunakan ip localhost pada port 8080.

Untuk beberapa kepentingan seperti log apache yang membutuhkan IP Address pengunjung dan bukan IP Address Nginx, kita akan menggunakan modul Apache rpaf yang informasi lebih lanjutnya dapat anda akses mealalui situs http://stderr.net/apache/rpaf/.

Lakukan instalasi Modul Apache rpaf;

yum install -y httpd-devel.x86_64
cd /usr/src/
wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
tar xzf mod_rpaf-0.6.tar.gz
/usr/sbin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c

Pastikan bahwa mod_rpaf-2.0.so sudah ada di dalam direktori /etc/httpd/modules/ kemudian edit file httpd.conf agar meload mod_rpaf ketika httpd dinyalakan;

vi /etc/httpd/conf/httpd.conf
# Tambahkan baris berikut
LoadModule rpaf_module modules/mod_rpaf-2.0.so

Apache harus direstart untuk mengaktifkan perubahan terkait, /etc/init.d/httpd restart

Konfigurasi Virtual Host Nginx

Buat direktif server {} di dalam file konfigurasi Nginx, dalam hal ini adalah /usr/local/nginx/conf/nginx.conf, posisi konfigurasi virtual host Nginx akan tergantung kepada konfigurasi awal yang anda miliki.

    server {
        listen       ip.publik.anda:80;
        server_name  domain.com www.domain.com;

        access_log  logs/domain.com-nginx-access.log  main;

        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    128k;

            proxy_connect_timeout      90;
            proxy_send_timeout         90;
            proxy_read_timeout         90;

            proxy_buffer_size          4k;
            proxy_buffers              4 32k;
            proxy_busy_buffers_size    64k;
            proxy_temp_file_write_size 64k;
        }

        # Static files location
        location ~* ^.+.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ {
            root   /path/ke/home/direktori/httpd/domain.com;
        }
    }

Pada konfigurasi di atas, Nginx hanya akan melayani request terhadap file statik yang ekstensionnya disebutkan, request di luar itu akan diarahkan ke Apache yang berjalan di 127.0.0.1 Port 8080 melalui direktif proxy_pass.

Agar direktori logs nginx sama dengan direktori logs apache, silahkan hapus direktori logs di dalam /usr/local/nginx, dan buat symlink logs ke /var/log/httpd.

cd /usr/local/nginx/
rm -rf logs
ln -s /var/log/httpd logs

Konfigurasi Virtual Host Apache

Virtual host apache tetap harus disetup, namun dengan menggunakan port 8080 dan IP Address 127.0.0.1, pastikan bahwa Apache hanya berjalan di port 8080 sehingga tidak bentrok dengan port 80 yang digunakan oleh Nginx.

vim /etc/httpd/conf/httpd.conf
Listen 127.0.0.1:8080

Kemudian masukkan direktif virtual host untuk domain.com di file yang sama;

NameVirtualHost 127.0.0.1:8080
<VirtualHost 127.0.0.1:8080>
 ServerAdmin [email protected]
 ServerName domain.com
 ServerAlias www.domain.com
 DocumentRoot /var/www/html/domain.com
 RPAFenable On
 RPAFsethostname On
 RPAFproxy_ips 127.0.0.1
 RPAFheader X-Real-IP
 <Directory />
 Options FollowSymLinks
 AllowOverride None
 </Directory>
 <Directory /var/www/html/domain.com>
 Options Indexes FollowSymLinks MultiViews
 AllowOverride All
 Order allow,deny
 allow from all
 </Directory>
LogLevel warn
   ErrorLog logs/domain.com-error.log
   CustomLog logs/domain.com-access.log combined
 </VirtualHost>

 

Pada contoh di atas konfigurasi RPAF berada di dalam direktif virtual host, apabila direktif ini tidak ada maka yang tercatat di log Apache adaah IP Address server anda sendiri, karena requestnya berasal dari Nginx (proxy) dan bukan dari user langsung.

Untuk impelementasi setup silahkan direstart service Nginx dan Apache.

Referensi

  • Mod rpaf untuk Apache http://stderr.net/apache/rpaf/
Situs ini dibuat dengan memanfaatkan Teknologi Open Source Wordpress, Nginx, 960 Grid System dan Linux CentOS.
Isi dari situs diutamakan untuk membantu Pengguna Layanan Magnet Hosting dalam memanfaatkan layanannya, disediakan tanpa jaminan, dapat dimanfaatkan, diperbanyak ataupun ditulis kembali dengan resiko masing-masing.
Copyright PT. Indonesia Digital Media © 2008-2009. (Top)