Konfigurasi Nginx sebagai Reverse Proxy untuk Web Server Apache

Konfigurasi Nginx sebagai Reverse Proxy Apache2. Oke kali ini saya akan sharing sedikit mengenai bagaimana cara menggunakan Nginx sebagai reverse proxy untuk Apache2. Jadi nantinya Nginx akan bertindak sebagai frontend dan Apache2 sebagai backendnya.
Untuk tutorial ini saya menggunakan Ubuntu 18.04 LTS.

Install Apache2
Pertama kita install Apache2 dan PHP terlebih dahulu.
sudo apt update
sudo apt install apache2
sudo apt-get install php libapache2-mod-php php-mysql libapache2-mod-rpaf
Selanjutnya adalah mengkonfigurasi Apache2.
Ubah port default web server Apache2 yang sebelumnya ada di port 80 ke port lain. Untuk memudahkan, kita gunakan saja port 8080.
sudo nano /etc/apache2/ports.conf
Cek baris Listen, dan ubah nilainya ke 8080.
Selanjutnya kita buat virtualhost untuk domain kita. Disini sebagai contoh saya menggunakan domain dengan nama linuxsec.local.
sudo nano /etc/apache2/sites-available/linuxsec.conf
Dan berikut konfigurasi sederhananya:


    ServerName linuxsec.local

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined


Tentu saja diatas adalah contoh konfigurasi virtualhost sederhana. Untuk konfigurasi lain bisa kalian sesuaikan sendiri.

Sekarang aktifkan virtualhost Apache2 dengan perintah
sudo a2ensite linuxsec.conf
Sesuaikan sendiri dengan nama file konfigurasi yang kalian buat.

Cek dengan perintah berikut untuk memastikan tidak ada error di konfigurasi Apache2
sudo apachectl configtest
Jika semuanya oke, restart Apache2 dengan perintah
sudo systemctl reload apache2
Sekarang web server Apache2 sudah berjalan di port 8080.

Install Nginx
Selanjutnya adalah proses instalasi Nginx sebagai reverse proxy
sudo apt install nginx
Selanjutnya buat sebuah serverblock untuk Nginx
sudo nano /etc/nginx/sites-available/linuxsec.conf
Isinya
server {
    listen 80;

    # direktori samakan degan milik apache2
    root /var/www/html;
    index index.php index.html index.htm;
    # domain
    server_name linuxsec.local;
    location / {
        try_files $uri $uri/ /index.php;
    }

    # konfigurasi reverse proxy
    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://localhost:8080;
    }

    location ~ /\.ht {
        deny all;
    }
}

Enable serverblock dengan perintah
sudo ln -s /etc/nginx/sites-available/linuxsec.conf /etc/nginx/sites-enabled/
Cek konfigurasinya apakah ada yang error
sudo nginx -t
Jika oke, reload Nginx dengan perintah
sudo service nginx reload
Sekarang Nginx sudah berjalan di port 80

Keduanya berjalan bersamaan

Kalian juga bisa pasang PHP Info untuk melihat proses PHP yang dijalankan di web server.
Terlihat kalau proses PHP nya dijalankan oleh Apache yang berada di backend.

Oke mungkin sekian tutorial singkat kali ini, semoga bermanfaat. Jika ada yang ingin ditanyakan silahkan tinggalkan komentar.