Tutorial Konfigurasi Nginx Sebagai Reverse Proxy Apache

Bagus Aji Santoso 5 Desember 2017

Tutorial Konfigurasi Nginx Sebagai Reverse Proxy Apache

Mengapa Menjalankan NGinx dan Apache Bersamaan?

Nginx dan Apache keduanya adalah server yang efektif dan powerful. Apache saat ini masih menjadi server nomor 1 sejak pertama kali di rilis tahun 2006 dan nginx telah mengambil alih perhatian dunia dengan menjadi server nomor 2. Alasan popularitas kedua server ini cukup jelas: apache dengan *power-*nya dan nginx dengan kecepatannya. Namun, kedua server ini juga memiliki kekurangan. Apache misalnya memakan cukup banyak memori server sementara nginx (sangat bagus untuk file static) perlu bantuan dari php-fpm atau modul sejenis untuk konten dinamis.

Bagaimanapun juga, kita dapat mengkombinasikan kedua server web ini untuk mendapatkan efek yang sangat berguna dengan nginx sebagai web server static untuk front end dan apache bekerja untuk backend.

Persiapan

Untuk melakukan tutorial ini, pembaca perlu memiliki akses sudo ke server yang akan dipakai. Untuk membuat user dengan akses sudo, ikuti tutorial ini.

Install nginx

Mari kita mulai dengan menginstall dan mengkonfigurasi nginx untuk menyediakan konten untuk front end situs kita.

Mari kita unduh dari apt-get:

sudo apt-get install nginx

Selanjutnya kita akan melakukan konfigurasi nginx untuk menyediakan file-file frontend.

Konfigurasi nginx

Buka konfigurasi nginx.

sudo nano /etc/nginx/sites-available/example

Konfigurasi berikut akan menyiapkan nginx sebagai server bagian front end.

server {
        listen   80; 

        root /var/www/; 
        index index.php index.html index.htm;

        server_name example.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;
        }
}

Berikut ini perubahan yang berbeda dibandingkan pengaturan biasa:

  • root diarahkan ke direktori web utama
  • index.php ditambahkan di baris index
  • trY-files akan mencoba memberikan halaman apapun yang diminta pengunjung. Jika nginx tidak dapat menyediakannya, lalu file tersebut dikirim ke proxy
  • proxy_pass memberikan alamat server yang di proxy
  • Terakhir "location ~/.ht{" akan memblok akses ke file .htaccess, jika document root Apache sama dengan nginx.

Konfigurasi ini akan menyiapkan sebuah sistem dimana semua ekstensi dengan akhiran php akan di arahkan ke backend yang berada di port 8080.

Aktifkan virtual host.

sudo ln -s /etc/nginx/sites-available/example /etc/nginx/sites-enabled/example

Sebagai tambahan, hapus erver block bawaan nginx.

sudo rm /etc/nginx/sites-enabled/default

Selanjutnya adalah memasang dan melakukan konfigurasi Apache.

Install Apache

Setelah mengatur nginx, sekarang saatnya memasang backend kita, apache.

sudo apt-get install apache2

Karena nginx belum diaktifkan, Apache akan mulai di port 8080.

Konfigurasi Apache

Kita perlu melakukan konfigurasi untuk apache agar mengambil alih bagian backend yang sebelumnya sudah kita tentukan di nginx menggunakan port 8080. Buka file ports apache untuk mengaturnya:

sudo nano /etc/apache2/ports.conf

Cari dan ubah sesuai dengan kode di bawah agar apache berjalan di port 8080 dan hanya diakses dari localhost:

NameVirtualHost 127.0.0.1:8080
Listen 127.0.0.1:8080

Simpan.

Lalu, buka sebuah file virtual host baru, salin layout dari file bawaan apache:

sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/example
sudo nano /etc/apache2/sites-available/example

Hal utama yang perlu diatur di sini adalah virtual host perlu dijalankan di port 8080 (bukan 80 yang sudah dipakai untuk nginx).

Ubah menjadi seperti ini:

<VirtualHost 127.0.0.1:8080>

Pastikan Document Root sudah mengarah ke folder yang sesuai. Simpan dan keluar dari nano lalu aktifkan Virtual Host tersebut:

sudo a2ensite example

Sebelum kita mengujinya, kita perlu memasang php untuk digunakan oleh apache.

 sudo apt-get install php5

Restart kedua server untuk mendapatkan efeknya:

sudo service apache2 restart
sudo service nginx restart

Penutup

Kita telah mengatur sebuah server dengan nginx berjalna di front end dan apache yang melakukan proses php di bagian backend. Pengunjung yang mengakses domain akan dibawa ke halaman utama.

Kita dapat menguji bahwa pengunjung benar-benar dibawa ke apache dengan membuat sebuah script php.

Buat sebuah file baru bernama php.info:

sudo nano /var/www/info.php

Tulis kode berikut ke dalamnya:

<?
phpinfo( );
?>

Simpan dan keluar dari nano.

Membuka domain/info.php akan menampilkan halaman php info dan kita dapat melihat bahwa apache yang menyediakannya. (screenshot disini)

Terakhir, kita bisa melihat port mana yang terbuka dan aplikasi apa yang menggunakannya dengan perintah.

sudo netstat -plunt

Lebih Lanjut

Konfigurasi nginx dan Apache dan meningkatkan performa server dan tutorial ini hanya memberikan gambaran umum. Jika memiliki pertanyaan seputar bagimana melakukan konfigurasi kedua server ini, silahkan tulis pertanyaan di Q&A Forum dan akan dibantu oleh komunitas.

Diterjemahkan dari How To Configure Nginx as a Reverse Proxy for Apache di bawah Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.