Cara Setting Nginx + SSL Sebagai Reverse Proxy untuk Apache di Ubuntu 18.04

Cara Setting Nginx + SSL Sebagai Reverse Proxy untuk Apache di Ubuntu 18.04

Nginx dan Apache dapat digunakan secara bersamaan di mana Nginx bertindak sebagai reverse proxy yang menerima permintaan dari client dan meneruskannya ke web server lain seperti Apache, kemudian Apache mengirimkan kembali respon yang diminta oleh Nginx untuk dikirimkan ke client. Hal ini dilakukan agar kedua web server ini bisa saling menutupi kekurangan.

Nginx sebagai Reverse Proxy untuk Apache
Nginx sebagai Reverse Proxy untuk Apache

0.Install Apache

Install Apache web server terlebih dahulu

Install FastCGI module

1.Setting Apache

Mengubah nama file konfigurasi Apache port.conf

Membuat file baru port.conf dengan nomor port 8080

Menonaktifkan Apache virtual host 000-default

Membuat file konfigurasi virtual host

Memasukkan konfigurasi 001-default.conf

Mengaktifkan virtual host 001-default.conf

Restart Apache

Verifikasi apakah Apache sudah berjalan di port 8080

Hasilnya terlihat bahwa apache2 berjalan di port 8080

2.Setting Apache untuk menggunakan mod_fastcgi

Mengaktifkan actions module

Mengubah nama file konfigurasi FastCGI

Membuat file konfigurasi baru untuk FastCGI

Memasukkan konfigurasi FastCGI

Tes konfigurasi Apache

Hasilnya Syntax OK, restart Apache

3.Verifikasi PHP

Verifikasi apakah script PHP sudah bisa dijalankan oleh Apache web server

Membuat file info.php untuk memanggil fungsi phpinfo

Browse http://IP_SERVER:8080/info.php, cek Server API, SERVER_PORT, dan SERVER_SOFTWARE.

PHP Information - Server API
PHP Information – Server API
PHP Information - SERVER PORT dan SERVER SOFTWARE
PHP Information – SERVER PORT dan SERVER SOFTWARE

4.Membuat Apache Virtual Host

Membuat konfigurasi Apache virtual host untuk subdomain web.defnex.com

Membuat folder document root

Membuat file index.html

Membuat file info.php

Membuat file virtual host untuk web.defnex.com

Memasukkan konfigurasi virtual host

Mengaktifkan virtual host

Mengecek konfigurasi Apache

Restart Apache

Verifikasi konfigurasi virtual host apakah sudah berfungsi dengan baik, browse http://web.defnex.com:8080

Browse subdomain
Browse subdomain

5.Install dan Setting Nginx

Install Nginx

Membuat konfigurasi Nginx server block untuk web.defnex.com

Memasukkan konfigurasi server block

Tes konfigurasi Nginx

Hasilnya

Restart Nginx

Verifikasi Nginx reverse proxy dengan mengakses http://web.defnex.com/info.php

PHP Information - Nginx Reverse Proxy
PHP Information – Nginx Reverse Proxy

6.Install dan Konfigurasi mod_rpaf

Apache module mod_rpaf menulis ulang nilai dari REMOTE_ADDR, HTTPS, dan HTTP_PORT. Jika tanpa module ini maka yang terbaca di Apache log adalah IP dari Nginx bukan dari visitor.

Install paket yang dibutuhkan untuk build module

Download source code mod_rpaf dari GitHub

Extract file mod_rpaf.zip

Compile mod_rpaf

Membuat file rpaf.load

Memasukkan konfigurasi load module

Membuat file konfigurasi rpaf.conf

Memasukkan konfigurasi module, RPAF_ProxyIPs diisi dengan IP_SERVER

Mengaktifkan module rpaf

Tes konfigurasi Apache

Restart Apache

Browse http://web.defnex.com/info.php, cek REMOTE_ADDR, harus berisi Public IP address dari komputer visitor

PHP Information - REMOTE ADDR
PHP Information – REMOTE ADDR

7.Setting HTTPS

Install SSL Let’s Encrypt untuk mengaktifkan HTTPS

Generate SSL untuk subdomain web.defnex.com yang berada di Nginx

Masukkan alamat email

Setujui ToS

Persetujuan untuk dikirimi informasi mengenai Let’s Encrypt, bisa jawab Y atau N.

Sertifikat SSL dibuat, mengubah dan menambahkan konfigurasi virtual host untuk SSL.

Kemudian pilih 2 untuk redirect HTTP ke HTTPS.

Install SSL untuk web.defnex.com selesai

Sertifikat SSL hanya berlaku selama 90 hari, renew untuk memperbarui sertifikat SSL

Browse https://web.defnex.com/info.php, cek $_SERVER[‘SERVER_PORT’] dan $_SERVER[‘HTTPS’]

PHP Information - HTTPS
PHP Information – HTTPS

8.Blokir Akses Langsung ke Apache

Blokir akses langsung ke Apache pada port 8080 dengan menggunakan iptables.

Format rule firewall, ganti IP_SERVER

IP_SERVER menggunakan 178.128.212.251

Tes iptables rule dengan mengakses http://web.defnex.com:8080, hasilnya ERR_CONNECTION_RESET

Browse port 8080
Browse port 8080

Selamat mencoba 🙂

12 Comments

  1. om saya udh aktifkan rpaf sesuai tutor, tetapi pas di akses info.php remote_addr bukan berisi ip visitor tetapi gateway server

  2. Kalau web server xampp windows, nginx reverse proxy di ubuntu, supaya bisa pakai https bagaimana pak?

Leave a Reply

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