Hallo sobat sekolahlinux, kali ini saya akan coba membuat tutorial bagaimana cara membuat nginx menjadi reverse proxy sedangkan dibelakangnya sudah ada apache/httpd, sebelum lebih jauh mari kita mengetahui alasan kenapa sih harus ada sebagai nginx reverse proxy di depan, bukannya apache/httpd juga sama-sama aplikasi untuk webserver jadi buat apa harus cape-cape pasang nginx sebagai reverse proxy toh kalau fungsinya sama saja, nah daripada saya capek jelasinnya disini dan juga memang penjelasannya memang panjang jadi sobat bisa ke link ini untuk melihat keunggulan dan kekurangan nginx https://goo.gl/CFZuaQ , namun yang pasti manajemen proses di nginx jauh lebih baik dibanding apache sehingga lebih menghemat RAM server kita apalagi jika server kita RAM nya kecil tapi trafiknya tinggi, oke back to topik langsung saja kita praktek.
pertama os yang saya gunakan pada tutorial kali ini adalah centos 7.x yang didalamnya sudah terpasang apache/httpd dan sudah berjalan dengan normal.
pastikan centosnya sudah update dan juga sudah terpasang epel repo
yum update -y && yum install epel-release
jangan lupa untuk disabled selinux
sed -i /etc/selinux/config -r -e 's/^SELINUX=.*/SELINUX=disabled/g'
sebelum kita install nginx kita konfigurasi dahulu apache/httpd agar nantinya tidak terjadi port conflict.
vim /etc/httpd/conf/httpd.conf
lalu rubah port 80 menjadi 8080 dan juga tambahkan port 8081 yang akan di listen oleh apache/httpd, ouu iya penambahan port 8081 ini sebenernya optional saja jadi bebas mau ditambah atau tidak port 8081
Listen 8080 Listen 8081
lalu tambahkan rule ini dan letakkan dipaling bawah di file httpd.conf, karena saya menambahkan port 8081 maka saya membuat virtualhost untuk port 8081. tapi jika kalian tidak menambahkan maka silahkan dihilangkan.
<VirtualHost sekolahlinux.lokal:8080> ServerName sekolahlinux.lokal ServerAlias www.sekolahlinux.lokal DocumentRoot /var/www/html/akbar ErrorLog /var/www/html/akbar/error.log CustomLog /var/www/html/akbar/requests.log combined </VirtualHost> <VirtualHost sekolahlinux1.lokal:8081> ServerName sekolahlinux1.lokal ServerAlias www.sekolahlinux1.lokal DocumentRoot /var/www/html/akbar1 ErrorLog /var/www/html/akbar1/error.log CustomLog /var/www/html/akbar1/requests.log combined </VirtualHost> <VirtualHost 192.168.100.10:8080> DocumentRoot /var/www/html ServerName 192.168.100.10 </VirtualHost>
jika sudah jangan lupa disave ya, selanjutkan kita akan install nginx serta konfigurasi agar menjadi reverse proxy
yum install -y nginx
lalu jika sudah edit file nginx.conf
vim /etc/nginx/nginx.conf
lalu beri tanda command beberapa rule sehingga menjadi seperti dibawah
# For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://nginx.org/ru/docs/ user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; events { worker_connections 1024; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; # Load modular configuration files from the /etc/nginx/conf.d directory. # See http://nginx.org/en/docs/ngx_core_module.html#include # for more information. include /etc/nginx/conf.d/*.conf; # server { # listen 80 default_server; # listen [::]:80 default_server; # server_name _; # root /usr/share/nginx/html; # Load configuration files for the default server block. # include /etc/nginx/default.d/*.conf; # # location / { # } # error_page 404 /404.html; # location = /40x.html { # } # error_page 500 502 503 504 /50x.html; # location = /50x.html { # } # } }
jika sudah save file nginx.conf, lalu buat file sekolahlinux.conf
vim /etc/nginx/conf.d/sekolahlinux.conf
lalu isikan dengan rule seperti dibawah
server { client_max_body_size 40M; listen 80; server_name sekolahlinux1.lokal; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://sekolahlinux1.lokal:8081; proxy_redirect off; } } server { client_max_body_size 40M; listen 80; server_name sekolahlinux.lokal; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://sekolahlinux.lokal:8080; proxy_redirect off; } } server { client_max_body_size 40M; listen 80; server_name 192.168.100.10; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://192.168.100.10:8080; proxy_redirect off; } }
jika sudah save file nginx.conf nya dan lalu restart apache/httpd dan nginx
service httpd restart && service nginx restart
untuk memastikan apakah port2nya sudah berjalan dengan baik tanpa ada conflict
[root@server ~]# netstat -ntlupa Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3110/nginx: master tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 879/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2009/master tcp 0 0 192.168.100.10:22 192.168.100.1:8990 ESTABLISHED 2091/sshd: root@pts tcp6 0 0 :::8080 :::* LISTEN 3133/httpd tcp6 0 0 :::8081 :::* LISTEN 3133/httpd tcp6 0 0 :::22 :::* LISTEN 879/sshd tcp6 0 0 ::1:25 :::* LISTEN 2009/master
jika diliat diatas port 8080 & 8081 sudah berjalan di program httpd dan port 80 juga sudah berjalan dengan baik di program nginx. untuk lebih memastikan kalian bisa melakukan pengecekan via browser, dan jadinya seperti dibawah
nah pasti kalian penasaran gimana cara taunya kalau itu sudah, klik kanan >> inspect >> lalu klik network (1) >> reload browser/refresh >> klik ip/domain/host (2) >> klik header >> dan kalian akan melihat web server yang digunakan (3), dilihat pada no 3 di gambar dibawah web servernya sudah menggunaan nginx
Sekian tutorial kali ini, semoga bermanfaat ya ? sebenernya itu hanya pengaturan standard jadi belum ada tuning macam2 mungkin kalian bisa juga membaca dari referensi dibawah ini untuk lebih lanjutnya.
https://kyup.com/tutorials/configure-nginx-reverse-proxy-apache/ https://deviantengineer.com/2015/05/nginx-reverseproxy-centos7/How To Configure Nginx as a Reverse Proxy for Apachehttps://www.nginx.com/resources/wiki/start/topics/examples/likeapache/ http://mangolassi.it/topic/6905/setting-up-nginx-on-centos-7-as-a-reverse-proxy http://www.server-world.info/en/note?os=CentOS_7&p=nginx&f=1 https://google.com