Jumat, 06 Juli 2012

Nginx sebagai reverse proxy

Sumber Data
http://www.geektantra.com/2011/06/using-nginx-as-a-load-balancer/


                                  ----------------
      IP.Ext 192.168.30.110:80 .->|Apache2 (BES1)| IP.192.168.70.2:8080
      IP.Ext xxx.xxx.xxx:80    |  ---------------- GW.192.168.70.1
         ------------------    |                   NM.255.255.255.0
Internet |Front-end server|>---.  ----------------
------>> |  Running NGinx |>----->|Apache2 (BES2)| IP.192.168.70.3:8080
         |     (FES)      |>---.  ---------------- GW.192.168.70.1
         ------------------    |                   NM.255.255.255.0
          192.168.70.1         |  ----------------
                               '->|Apache2 (BES3)| IP.192.168.70.4:8080
                                  ---------------- GW.192.168.70.1

FES-Nginx (192.168.70.1)                           NM.255.255.255.0
apt-get install nginx

nano /etc/nginx/proxy.conf
Setting
      proxy_redirect          off;
      proxy_set_header        Host            $host;
      proxy_set_header        X-Real-IP       $remote_addr;
      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      client_max_body_size    10m;
      client_body_buffer_size 128k;
      proxy_connect_timeout   90;
      proxy_send_timeout      90;
      proxy_read_timeout      90;
      proxy_buffers           32 4k;

Edit the file 
nano /etc/nginx/sites-enabled/default
Isi Kode:
upstream lb_units {
  server 192.168.70.2:8080 weight=10 max_fails=3 fail_timeout=30s; # BES1
  server 192.168.70.3:8080 weight=10 max_fails=3 fail_timeout=30s; # BES2
  server 192.168.70.4:8080 weight=10 max_fails=3 fail_timeout=30s; # BES3
  }
server {
  # Listen on the external interface
  listen 192.168.30.110:80;
  server_name  my.domain-name.com; # nama server disesuaikan
  access_log  /var/log/nginx/nginx.access.log;
  error_log  /var/log/nginx/nginx_error.log debug;
  location / {
      proxy_pass http://lb_units; 
      # Load balance the URL location "/" to the upstream lb_units
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      }
   error_page   500 502 503 504  /50x.html;
   location = /50x.html { root   /var/www/nginx-default; }
}

Reload NGinx
/etc/init.d/nginx reload

Install BES1, BES2, dan BES3 sesuai keperluan web server anda
Jangan lupa untuk merubah port http dari 80 ke 8080

Seting Apache di BES

Jangan Lupa untuk merubah port http
nano /etc/apache2/ports.conf
Tambahkan
                      NameVirtualHost *:8080
                      Listen 8080 atau
                      listen 192.168.70.2:8080
                      ip disesuaian dengan Webserver Apache yang terhung ke Nginx

Restart Apache
/etc/init.d/apache2 restart

Modul yang perlu di Install di Apache adalah
apt-get install libapache2-mod-rpaf


Edit Virtual host server
nano /etc/apache2/sites-available/default
Tambahkan
                        <IfModule mod_rpaf.c>
                                RPAFenable On
                                RPAFsethostname On
                                RPAFproxy_ips 192.168.70.1         # IP Nginx
                                RPAFheader X-Forwarded-For       # ditambahkan di belum bisa jalan
                        </IfModule>

Untuk Ubuntu 12.04
                        <IfModule mod_rpaf-2.0.c>
                              RPAFenable On
                              RPAFsethostname On
                              RPAFproxy_ips 192.168.70.1       # IP Nginx
                              RPAFheader X-Forwarded-For     # ditambahkan di belum bisa jalan
                        </IfModule>

Ubah Seting dibawah ini
                        <Directory /var/www/>
                              Options Indexes FollowSymLinks MultiViews
                              AllowOverride all        # default none
                              Order allow,deny
                              allow from all
                        </Directory>




Tidak ada komentar:

Posting Komentar