Nginx atau "engine-x " adalah server web berkinerja tinggi dengan penggunaan memori rendah, dibuat oleh Igor Sysoev pada tahun 2002. Nginx bukan hanya server web, tetapi dapat digunakan sebagai proxy terbalik untuk banyak protokol seperti HTTP, HTTPS, POP3, SMTP, dan IMAP dan juga sebagai penyeimbang beban dan cache HTTP.
Apache adalah perangkat lunak server web paling populer yang dikelola oleh komunitas open source di bawah Apache Software Foundation. Ada banyak modul tambahan yang tersedia untuk Apache seperti dukungan WebDav atau firewall aplikasi web seperti mod_security dan mendukung banyak bahasa pemrograman web seperti Perl, Python, PHP melalui modul asli atau dengan antarmuka cgi, fcgi dan FPM.
Dalam tutorial ini, saya akan menginstal dan mengkonfigurasi Nginx sebagai caching reverse proxy untuk web server Apache di Ubuntu 15.10, Nginx digunakan sebagai front end dan Apache sebagai back end. Nginx akan berjalan pada port 80 untuk merespon permintaan dari pengguna/browser, permintaan tersebut kemudian akan diteruskan ke server apache yang berjalan pada port 8080.
Langkah 1 - Instal Apache dan PHP
Masuk ke server ubuntu Anda dengan SSH dan menjadi pengguna root dengan menjalankan:
sudo su
Kemudian instal apache dengan perintah apt-get:
apt-get install apache2
Setelah apache terinstal, kita harus menginstal PHP sebagai modul apache untuk tutorial ini:
apt-get install php5 php5-mysql libapache2-mod-php5
Langkah 2 - Konfigurasi Apache dan PHP
Secara default, apache mendengarkan pada port 80. Kita harus mengonfigurasi apache agar berjalan pada port 8080 untuk pengaturan proxy kita karena port 80 akan digunakan oleh nginx nanti.
Jika Anda ingin mengubah port untuk server web apache, Anda harus mengedit file konfigurasi apache "/etc/apache2/ports.conf", lalu lanjutkan dengan konfigurasi virtual host di "/etc/apache2/sites-available/ " direktori.
Pertama ubah port untuk apache menjadi 8080 dengan mengedit file "ports.conf" dengan editor vim:
vim /etc/apache2/ports.conf
Di jalur 5 , ubah port 80 menjadi 8080.
Listen 8080
Simpan dan keluar.
Sekarang masuk ke direktori virtualhost dan edit file "000-default.conf" :
cd sites-available/
vim 000-default.conf
Pastikan konfigurasi Anda sama seperti di bawah ini:
<VirtualHost *:8080> ServerName www.reverse.com ServerAlias reverse.com ServerAdmin [email protected] DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Simpan dan keluar.
Selanjutnya, uji konfigurasi dan restart apache:
apachectl configtest
systemctl restart apache2
Akhirnya kami memverifikasi bahwa apache dan php berfungsi. Buat file baru dengan nama "info.php" di direktori "/var/www/html/".
cd /var/www/html/
echo "<?php phpinfo(); ?>" > info.php
Kunjungi situs Anda www.reverse.com:8080/info.php .
Hasilnya akan mirip dengan screenshot di atas.
Langkah 3 - Instal Nginx
Instal Nginx dengan perintah apt-get berikut:
apt-get install nginx
Langkah 4 - Konfigurasi Nginx
Setelah Nginx terinstal, konfigurasikan Nginx untuk bertindak sebagai proxy terbalik untuk server web apache yang berjalan pada port 8080.
Buka direktori konfigurasi nginx dan edit file "nginx.conf":
cd /etc/nginx/
vim nginx.conf
Aktifkan kompresi Gzip untuk Nginx dengan menghapus komentar pada baris gzip:
# Gzip Settings ## gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
yang paling penting adalah :
gzip aktif :untuk mengaktifkan kompresi gzip.
gzip_types :adalah daftar tipe MIME yang ingin Anda ubah kompresinya.
gzip_proksikan apa saja :mengaktifkan kompresi untuk permintaan proxy.
Tepat di bawah pengaturan gzip, tambahkan pengaturan cache proxy ini:
# Proxy Cache Settings proxy_cache_path /var/cache levels=1:2 keys_zone=reverse_cache:60m inactive=90m max_size=1000m;
Direktori untuk cache proxy adalah /var/cache.
level adalah arahan yang memberi tahu Nginx bagaimana cache disimpan dalam sistem file.
zona_kunci hanyalah nama zona cache, Anda dapat memilihnya dengan bebas, tetapi jangan menambahkan karakter khusus atau spasi putih pada namanya. Saya akan menggunakan nama "reverse_cache " di sini.
Simpan dan Keluar.
Sekarang kita akan mengkonfigurasi virtualhost di direktori "/etc/nginx/sites-available".
Dalam tutorial ini, saya akan membuat file konfigurasi virtualhost baru bernama "reverse.conf". Baru saja masuk ke direktori dan buat file baru dengan vim:
cd /etc/nginx/sites-available
vim reverse.conf
Rekatkan konfigurasi di bawah ini:
server { listen 80; # Site Directory same in the apache virtualhost configuration root /var/www/html; index index.php index.html index.htm; # Domain server_name www.reverse.com reverse.com; location / { try_files $uri $uri/ /index.php; } # Reverse Proxy and Proxy Cache Configuration 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; # Cache configuration proxy_cache reverse_cache; proxy_cache_valid 3s; proxy_no_cache $cookie_PHPSESSID; proxy_cache_bypass $cookie_PHPSESSID; proxy_cache_key "$scheme$host$request_uri"; add_header X-Cache $upstream_cache_status; } # Enable Cache the file 30 days location ~* .(jpg|png|gif|jpeg|css|mp3|wav|swf|mov|doc|pdf|xls|ppt|docx|pptx|xlsx)$ { proxy_cache_valid 200 120m; expires 30d; proxy_cache reverse_cache; access_log off; } # Disable Cache for the file type html, json location ~* .(?:manifest|appcache|html?|xml|json)$ { expires -1; } location ~ /\.ht { deny all; } }
Simpan dan keluar.
Kemudian aktifkan konfigurasi virtualhost baru:
ln -s /etc/nginx/sites-available/reverse.conf /etc/nginx/sites-enabled/
Terakhir kita akan menguji konfigurasi nginx dan restart nginx:
nginx -t
systemctl restart nginx
Nginx dikonfigurasi sebagai proxy terbalik sekarang. Anda dapat mengujinya dengan curl:
curl -I www.reverse.com
Kontrol Cache:tanpa cache berarti index.html dan semua file yang diakhiri dengan .html tidak akan di-cache.
Tes lain:
curl -I www.reverse.com/info.php
X-Cache:HIT berarti halaman tersebut dilayani oleh cache Nginx.
Langkah 5 - Konfigurasikan Logging
Pada langkah ini, saya akan mengonfigurasi apache untuk mencatat ip asli pengunjung, bukan IP lokal.
Harap instal modul apache "libapache2-mod-rpaf" dan edit file konfigurasi modul:
sudo apt-get install libapache2-mod-rpaf
cd /etc/apache2/mods-available/
vim rpaf.conf
Tambahkan IP server ke baris 10 . Server saya memiliki IP:192.168.1.108.
RPAFproxy_ips 127.0.0.1 192.168.1.108 ::1
Simpan dan keluar.
Sekarang restart apache :
systemctl restart apache2
Uji rpaf dengan melihat log akses apache dengan perintah tail:
tail -f /var/log/apache2/access.log
Itu saja.
Nginx diinstal sebagai proxy terbalik di depan server web Apache. Jika pengunjung meminta file php, permintaan tersebut akan diteruskan ke apache pada port 8080, dan Anda dapat melihat ip pengunjung yang sebenarnya pada file log apache.
Kesimpulan
Nginx adalah server web yang cepat dan populer dengan penggunaan memori rendah yang dapat bertindak sebagai server web dan proxy terbalik untuk protokol HTTP dan HTTPS. Proksi terbalik Nginx untuk apache adalah pengaturan yang menggunakan Nginx sebagai ujung depan, dan apache sebagai ujung belakang. Nginx menangani permintaan masuk dari browser dan meneruskannya ke backend apache. Dalam tutorial ini, kita telah menyiapkan konfigurasi untuk nginx sebagai cache http yang menyimpan permintaan file PHP dan gambar.