Skip to main content
menggabungkan nginx dan apache

Cara Konfigurasi Web Server NginX Sebagai Reverse Proxy Apache

Ridho.ID – Bagaimana cara konfigurasi nginx sebagai frontend dan apache sebagai backend dalam satu server ? Disini saya akan menjelaskan cara konfigurasi dasar menggabungkan dua buah webserver yang paling banyak digunakan saat ini.

Baik nginx maupun apache adalah server yang sangat efektif dan powerfull. Saat ini apache merupakan web server yang paling populer dan banyak digunakan di berbagai situs web didunia. Sedangkan nginx, sejak dirilis dan diperkenalkan ke publik pada tahun 2006, banyak situs-situs web beralih dari apache ke nginx dengan berbagai alasan. Apache dan nginx memiliki kelebihan dan kekurangan nya masing-masing. Salah satu alasan utama migrasi dari apache ke nginx adalah penggunaan memori yang relatif lebih besar pada web server apache  dibandingkan nginx. Namun nginx sendiri juga memiliki kekurangan yaitu jika pada apache memiliki modul mod_rewrite dimana salah satu fungsinya ialah untuk penggunaan .htaccess sedangkan pada nginx tidak memiliki modul tersebut, kecuali dengan menambahkan modul php-fpm atau modul sejenisnya untuk konten dinamis.

Namun, menggabungkan dua web server tersebut adalah solusi yang cukup baik untuk memaksimalkan performa website dengan nginx sebagai frontend pengolah konten statis dan apache sebagai backend untuk meneruskan dari request yang diberikan oleh nginx untuk mengolah konten dinamis.

Oke baiklah langsung saja kita lakukan konfigurasi yang pertama.

Install NginX

Lakukan instalasi nginx dengan mengetikkan perintah “sudo apt-get install nginx“. Setelah itu buka file konfigurasi virtual host nginx dengan perintah “sudo nano /etc/nginx/sites-available/ridho.id“, sesuaikan nama file “ridho.id” ganti dengan nama konfigurasi pada web kamu. Setelah itu sesuaikan konfigurasi seperti dibawah ini :

server {
 server_name www.ridho.id ridho.id;
 root /var/www/ridho.id/public_html; //disesusaikan pada direktori root web yang dituju

access_log off;

# Konten Statis
 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)$ {
 expires max;
 }

# Konten Dinamis, Diteruskan ke Apache
 location / {
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header Host $host;
 proxy_pass http://127.0.0.1:8080;

# Cache configuration
 proxy_cache reverse_cache;
 proxy_cache_valid 3s;
 proxy_no_cache $cookie_PHPSESSID;
 proxy_cache_bypass $cookie_PHPSESSID;
 proxy_cache_key "$scheme$host$request_uri";
 add_header X-Cache $upstream_cache_status;

# Enable Cache the file 30 days
 location ~* .(jpg|png|gif|jpeg|css|mp3|wav|swf|mov|doc|pdf|xls|ppt|docx|pptx|xlsx)$ {
 proxy_cache_valid 200 120m;
 expires 30d;
 proxy_cache reverse_cache;
 access_log off;
 }

# Disable Cache for the file type html, json
 location ~* .(?:manifest|appcache|html?|xml|json)$ {
 expires -1;
 }

}
}

Setelah itu save file konfigurasi yang telah diubah dengan menekan “ctrl+x” lalu ketik “Y” dan enter. Konfigurasi diatas menjelaskan dimana ekstensi dengan akhiran .php akan diarahkan pada backend web server apache yang berjalan pada port 8080. 

Aktifkan virtual host dengan cara mengetikkan perintah “sudo ln -s /etc/nginx/sites-available/ridho.id /etc/nginx/sites-enabled/ridho.id“. Selesai sampai disini, kita sudah melakukan konfigurasi pada nginx, selanjutnya melakukan instalasi web server apache sebagai backend.

Install Apache

Ketik perintah “sudo apt-get install apache2” untuk melakukan install apache. Kita perlu melakukan konfigurasi apache untuk mengambil alih backend dari nginx dimana apache akan berjalan pada port 8080. Caranya adalah dengan mengetikkan perintah “sudo nano /etc/apache2/ports.conf“, lalu sesuaikan dengan konfigurasi berikut.

ridho.id 127.0.0.1:8080
Listen 127.0.0.1:8080

Setelah itu save file konfigurasi tersebut. Selanjutnya buat file virtual host baru pada apache dengan perintah “sudo nano /etc/apache2/sites-available/ridho.id“, sesuaikan kembali dengan konfigurasi berikut.

<VirtualHost 127.0.0.1:8080>
 ServerAdmin [email protected]
 ServerName ridho.id
 ServerAlias www.ridho.id

DocumentRoot /var/www/ridho.id/public_html //sesuaikan root folder yang dituju
 <Directory />
 Options FollowSymLinks
 AllowOverride None
 </Directory>
 <Directory /var/www/>
 Options Indexes FollowSymLinks MultiViews
 AllowOverride All
 Order allow,deny
 allow from all
 </Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
 <Directory "/usr/lib/cgi-bin">
 AllowOverride None
 Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
 Order allow,deny
 Allow from all
 </Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
 # alert, emerg.
 LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Simpan file konfigurasi dari virtual diatas lalu exit. Aktifkan virtual host apache dengan perintah “sudo a2ensite ridho.id“. Sebelum melakukan ujicoba jangan lupa install php dengan perintah “sudo apt-get install php5“.  Setelah itu lakukan restart nginx dan apache dengan perintah “sudo service apache2 restart” dan “sudo service nginx restart“. Sampai disini kita telah selesai melakukan konfigurasi nginx sebagai reverse proxy dari webserver apache.

Silahkan isikan pada kolom komentar apabila ada yang ingin ditanyakan dan ingin mengoreksi dari konfigurasi diatas. 

Leave a Reply

Your email address will not be published. Required fields are marked *