Cara Install Apache2 dan NginX sebagai Reserve Proxy – NGINX sangat bagus dalam menyajikan file statis, menggunakan lebih sedikit sumber daya daripada Apache.
Di sisi lain, Apache menawarkan lebih banyak fitur.
Dimungkinkan untuk menjalankan keduanya, sehingga NGINX menyajikan file statis (secara teknis sebagai reserve proxy) dan Apache menjalankan skrip PHP.
Apa itu Reserve Proxy?
Ada beberapa alasan untuk menginstal Reserve Proxy. Salah satu alasan utamanya adalah privasi.
Jika kita memiliki beberapa server, Reserve Proxy dapat membantu menyeimbangkan beban antar server dan meningkatkan kinerja. Karena Reserve Proxy menyediakan satu titik kontak untuk klien, proxy ini dapat memusatkan pencatatan dan pelaporan di beberapa server.
NGINX akan menjadi server web yang dapat dilihat publik, sedangkan Apache hanya akan terlihat oleh NGINX di port 8080.
Dalam tutorial kali kita akan belajar membuat Apache2 untuk menjalankan file PHP dan NginX bekerja menyajikan file statis seperti JPEG, GIF, PNG, dll diluar file PHP, pada Ubuntu 20.04 virtual private server ataupun AWS EC2.
Apa saja yang diperlukan untuk Install Apache2 dan Nginx?
- VPS atau VM disini saya menggunakan AWS EC2 Free Tier
- Ubuntu Server 20.04
- SSH & User dengan privilege perintah sudo (bisa menggunakan Termux atau Admin Hands yang sudah saya review)
Sebelum memulai instalasi, seperti biasa kita membutuhkan akses ke server via SSH. Setelah login ke server via SSH, pastikan dan biasakan untuk melakukan update package index. Agar semua package yang terinstall diperbarui ke versi yang baru.
sudo apt update && sudo apt upgrade
Install NGINX
Kita akan menginstall NginX dan akses directory server pada path: /var/www/judisweb.com/public_html
sudo apt install nginx
Note: ini adalah cara paling mudah untuk meng-install Nginx di Ubuntu, tetapi mungkin bukan versi rilis terbaru.
Install Nginx dari Repository resmi (opsional)
Untuk install via Nginx Official bisa membuka link ini sebagai sumber referensi.
sudo wget https://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
Setelah mendownload key, edit file /etc/apt/sources.list
sudo nano /etc/apt/sources.list
Tambahkan line ini:
deb https://nginx.org/packages/mainline/ubuntu/ <CODENAME> nginx
deb-src https://nginx.org/packages/mainline/ubuntu/ <CODENAME> nginx
<CODENAME>
merupakan codename dari rilis Ubuntu, misal Ubuntu 14.04 (“trusty”) / Ubuntu 20.04 (“focal”)
Konfigurasi Nginx
Kemudian kita akan menghapus default configuration pada NGINX website:
sudo rm /etc/nginx/sites-enabled/default
Menambahkan situs/website ke NGINX
sudo nano /etc/nginx/sites-available/judisweb.com
Isikan konfigurasi seperti dibawah ini untuk website judisweb.com
server {
listen 80;
root /var/www/judisweb.com/public_html/;
index index.php index.html index.htm;
server_name
www.judisweb.com
judisweb.com
;
location ~ /\.ht {
deny all;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
proxy_set_header X-Forwarded-Proto $scheme;
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$request_uri;
proxy_read_timeout 600;
}
}
Selanjutnya kita aktifkan situs NGINX ini:
sudo ln -s /etc/nginx/sites-available/judisweb.com /etc/nginx/sites-enabled/judisweb.com
Install Apache2
Install Apache2 seperti pada umumnya pada Ubuntu:
sudo apt install -y apache2
Selama instalasi mungkin terjadi kesalahan yang menyatakan bahwa apache tidak dapat dijalankan: abaikan saja (itu karena Apache mencoba untuk mulai menggunakan port 80, yang sudah diambil oleh NGINX) karena kita akan menggunakan port 8080 seperti yang saya jelaskan diawal artikel ini.
Kita nonaktifkan situs web Apache default:
sudo a2dissite 000-default
Selanjutnya kita merubah port Apache menjadi 8080:
sudo nano /etc/apache2/ports.conf
Masukkan konfigurasi port Apache seperti dibawah ini:
Listen 127.0.0.1:8080
<VirtualHost 127.0.0.1:8080>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/judisweb.com/public_html
ErrorLog ${APACHE_LOG_DIR}/judisweb.com.error.log
CustomLog ${APACHE_LOG_DIR}/judisweb.com.access.log combined
</VirtualHost>
<Directory "/var/www/judisweb.com/public_html">
Options +FollowSymLinks -SymLinksIfOwnerMatch
AllowOverride All
</Directory>
Terakhir kita aktifkan web judisweb.com
sudo a2ensite judisweb.com
Untuk mengaktifkan permalink apache rewrite (opsional):
sudo a2enmod rewrite
Restart Apache2 dan NginX untuk memuat ulang konfigurasi:
sudo service apache2 restart
sudo service nginx restart
Untuk percobaan apakah php file kita dijalankan oleh Apache2, maka bisa mencoba dengan membuat file php untuk menjalankan fungsi php_info().
Untuk percobaan selanjutnya apakah NginX bekerja berjalan pada file statis saja dengan menggunakan perintah ini:
curl -I -X POST "http://<file_konten_statis>"
Note: file konten statis seperti JPG, PNG, HTML
HTTP/1.1 200 OK
Server: nginx/1.18.0 (Ubuntu)
Date: Sat, 23 Oct 2021 15:49:50 GMT
Content-Type: text/html
Content-Length: 128
Connection: keep-alive
Last-Modified: Fri, 22 Oct 2021 06:01:30 GMT
ETag: "80-5ceeabe149a9c"
Accept-Ranges: bytes
Vary: Accept-Encoding
Demikian tutorial Cara Install Apache2 dan NginX sebagai Reserve Proxy, dimana Apache2 hanya menjalankan PHP skrip, dan file lain bersifat statis dijalankan oleh NGINX.