Proxy adalah sebuah sistem dimana request dari browser untuk menampilkan website tidak diresponse secara langsung oleh web server, melainkan melalui sebuah proxy server sebagai perantaranya. Pada panduan ini, kami akan memberikan panduan cara install Nginx sebagai reverse proxy apache yang bisa Anda install di VPS.
Untuk memudahkan Anda dalam memahami konteks panduan ini, kami akan menjelaskan terlebih dahulu apa yang dimaksud Nginx serta reverse proxy. Berikut informasi selengkapnya.
Apa itu Nginx?
Nginx adalah software open source yang dapat digunakan sebagai web server, load balancer, media streaming, reverse proxy dan banyak lagi.
Nginx dikembangkan oleh perusahaan Nginx, Inc. dari Rusia pada tahun 2004 yang tersedia untuk GNU/Linux, BSD, DARWIN, Windows, macOS, dan Unix.
Nginx dirancang sebagai webserver yang memiliki stabilitas dan kinerja server yang tinggi, serta memiliki kemampuan sebagai HTTP load balancer dan reverse proxy.
Apa itu Reverse Proxy?
Reverse Proxy adalah sistem proxy yang digunakan untuk meneruskan/bypass permintaan client dari web server frontend ke web server utama backend. Reverse proxy sebagai jembatan diantara server frontend dan backend, dan bertugas untuk menjamin pertukaran data dan request berjalan secara lancar.
Selain pertukaran data, Reverse Proxy juga memberikan keamanan dan kompresi, sehingga server menjadi lebih ringan dalam memenuhi banyak permintaan sekaligus.
Reverse Proxy biasanya diterapkan di webserver apache dan Nginx. Nginx dan Apache dapat digunakan secara bersamaan, dimana Nginx bertindak sebagai reverse proxy/server frontend yang menerima permintaan dari client dan meneruskannya ke web server backend seperti Apache.
Kemudian Apache mengirimkan kembali respon yang diminta oleh Nginx untuk dikirimkan kembali ke client. Hal ini dilakukan agar 2 web server ini bisa saling terhubung.
Konfigurasi Reverse Proxy
Pada panduan ini, kami menggunakan layanan VPS KVM paket M dengan OS Linux Ubuntu 20.04. Namun panduan ini juga bisa digunakan untuk Ubuntu versi 18.04.
Berikut cara membuat reverse proxy apache melalui Nginx.
Step 1. Install Apache
- Install apache webserver dan php-fpm.
apt update
apt install apache2 php-fpm -y
- Install mod FastCGI.
# wget https://mirrors.edge.kernel.org/ubuntu/pool/multiverse/liba/libapache-mod-fastcgi/libapache2-mod-fastcgi_2.4.7~0910052141-1.2_amd64.deb
# dpkg -i libapache2-mod-fastcgi_2.4.7~0910052141-1.2_amd64.deb
- Mengubah port backend apache ke port selain 80. Pada panduan ini, kami akan menggunakan port 8080.
- Ubah nama dan konfigurasi vhost bawaan apache.
mv /etc/apache2/ports.conf /etc/apache2/ports.conf.default
- Mengarahkan port apache ke 8080.
echo "Listen 8080" | tee /etc/apache2/ports.conf
- Menonaktifkan vhost apache default.
a2dissite 000-default
- Setelah mengatur port apache ke 8080, kita akan membuat konfigurasi untuk Virtualhost apache yang berjalan di port 8080.
- Membuat file konfigurasi vhost.
nano /etc/apache2/sites-available/001-default.conf
- Input kongifurasi virtualhost.
<VirtualHost *:8080>
ServerAdmin rumahweb@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
- Aktifkan virtualhost lalu restart apache service.
a2ensite 001-default
systemctl restart apache2
- `Pastikan untuk virtualhost apache berjalan di port 8080.
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 870/systemd-resolve
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1065/sshd
tcp6 0 0 :::8080 :::* LISTEN 8774/apache2
tcp6 0 0 :::22 :::* LISTEN 1065/sshd
Step 2. Config Apache menggunakan mod_fastcgi
1. Aktifkan mod FastCGI.
a2enmod actions
2. Ubah file bawaan fastcgi.
mv /etc/apache2/mods-enabled/fastcgi.conf /etc/apache2/mods-enabled/fastcgi.conf.default
3. Membuat file konfigurasi baru untuk fastcgi.
nano /etc/apache2/mods-enabled/fastcgi.conf
Inputkan konfigurasi fastcgi sesuai versi php
<IfModule mod_fastcgi.c>
AddHandler fastcgi-script .fcgi
FastCgiIpcDir /var/lib/apache2/fastcgi
AddType application/x-httpd-fastphp .php
Action application/x-httpd-fastphp /php-fcgi
Alias /php-fcgi /usr/lib/cgi-bin/php-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php-fcgi -socket /run/php/php7.2-fpm.sock -pass-header Authorization
<Directory /usr/lib/cgi-bin>
Require all granted
</Directory>
</IfModule>
4. Restart service apache webserver
systemctl restart apache2
Step 3. Verifikasi Fastcgi melalui phpinfo
1. Buat file phpinfo dengan nama info.php.
echo "<?php phpinfo(); ?>" | tee /var/www/html/info.php
2. Cek melalui browser ke http://IP_SERVER:8080/info.php, cek Server API, SERVER_PORT, dan SERVER_SOFTWARE.
Membuat Virtualhost untuk domain
Langkah selanjutnya adalah membuat virtual host untuk domain. Kali ini kami akan menggunakan subdomain backend.dikanetwork.web.id sebagai contoh.
1. Membuat folder document root dan file index.
mkdir /var/www/backend.dikanetwork.web.id
echo "<h1>halo ini backend</h1>" | tee /var/www/backend.dikanetwork.web.id/index.html
2. Membuat Konfigurasi virtualhost untuk domain.
- Input File konfigurasi apache
/etc/apache2/sites-available/backend.dikanetwork.web.id.conf
<VirtualHost *:8080>
ServerName backend.dikanetwork.web.id
DocumentRoot /var/www/backend.dikanetwork.web.id
<Directory /var/www/backend.dikanetwork.web.id>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/apache2/backend.dikanetwork.web.id_error.log
CustomLog /var/log/apache2/backend.dikanetwork.web.id_access.log combined
</VirtualHost>
- Aktifkan virtualhost.
a2ensite backend.dikanetwork.web.id
- Restart service Apache .
systemctl restart apache2
- Akses menggunakan http://backend.dikanetwork.web.id:8080
Baca juga artikel: Free Proxy Video Player Terbaik [Update 2022]
Setting Nginx Sebagai Reverse Proxy
Langkah selanjutnya, kita akan melakukan setting Nginx sebagai reverse Proxy apache. Berikut langkah-langkahnya.
Step 1. Setting Nginx sebagai reverse proxy
1. Install Nginx dengan perintah berikut.
apt install nginx -y
2. Membuat block virtualhost untuk Nginx.
nano /etc/nginx/conf.d/backend.dikanetwork.web.id.conf
server {
listen 80;
server_name backend.dikanetwork.web.id;
root /var/www/backend.dikanetwork.web.id;
index index.php index.htm index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
proxy_pass http://IP SERVER:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location ~ /\.ht {
deny all;
}
access_log /var/log/nginx/backend.dikanetwork.web.id_access.log;
error_log /var/log/nginx/backend.dikanetwork.web.id_error.log warn;
}
3. Restart Nginx
systemctl restart nginx
systemctl status nginx
4. Verifikasi Nginx reverse proxy dengan mengakses http://backend.dikanetwork.web.id/info.php
Step 2. Config mod_rpaf
1. install rpaf.
apt install unzip build-essential apache2-dev -y
2. download Rpaf dari github.
wget https://github.com/gnif/mod_rpaf/archive/stable.zip -O mod_rpaf.zip
unzip mod_rpaf.zip
cd mod_rpaf-stable
make
make install
3. Membuat file rpaf dan input rpaf load.
nano /etc/apache2/mods-available/rpaf.load
LoadModule rpaf_module /usr/lib/apache2/modules/mod_rpaf.so
4. Membuat file konfigurasi rpaf.conf
nano /etc/apache2/mods-available/rpaf.conf
5. Ganti RPAF_ProxyIPs dengan ip server.
<IfModule mod_rpaf.c>
RPAF_Enable On
RPAF_Header X-Real-Ip
RPAF_ProxyIPs IP Server
RPAF_SetHostName On
RPAF_SetHTTPS On
RPAF_SetPort On
</IfModule>
6. Aktifkan rpaf dan restart apache
a2enmod rpaf
systemctl restart apache2
7. Akses http://backend.dikanetwork.web.id/info.php dan cek REMOTE_ADDR, harus berisi Public IP address dari visitor.
Step 3. Install SSL
Secure Socket Layer atau yang disingkat menjadi SSL adalah lapisan keamanan terenkripsi yang berfungsi untuk mengamankan transaksi data antara web browser dan server.
Anda bisa menggunakan SSL gratis maupun SSL berbayar. Namun pada panduan ini, kami akan mencontohkan install SSL Let’s encrypt yang dapat Anda gunakan secara gratis. Berikut langkah-langkah instalasinya.
1. Install ssl certbot.
cd
add-apt-repository ppa:certbot/certbot
apt install python-certbot-nginx -y
2. Install ssl certbot untuk backend.dikanetwork.web.id.
certbot --nginx -d backend.dikanetwork.web.id
3. Inputkan email dan konfirmasi installasi ssl, maka ssl akan teirnstall otomatis.
Sampai tahap ini, kita telah berhasil melakukan konfigurasi Nginx sebagai reverse proxy.
Demikian panduan kami tentang cara install Nginx sebagai reverse proxy apache di VPS Linux, semoga bermanfaat.