Nginx reverse proxy pada centos 7

0
8968

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

jagon1 jagon2 jagon3

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

jagoncheck

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 Apache
https://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