Konfigurasi Nginx sebagai reverse Proxy Apache Webuzo

  • -

Konfigurasi Nginx sebagai reverse Proxy Apache Webuzo

Last updated on

Nginx dan Apache memiliki keunggulan dan kelemahan masing-masing. Berikut adalah keunggulan dan kelemahan yang menonjol pada kedua web server tersebut:

Nginx

—Keunggulan—

Cepat dalam akses website statis seperti file gambar dan lain-lain sehingga jika website Anda memiliki pengunjung yang banyak maka sangat disarankan menggunakan Nginx karena akan mengurangi beban server untuk meload website dan mempercepat akses jika dibandingkan dengan Apache.

—Kelemahan—

Nginx tidak mendukung mod_rewrite secara penuh sehingga diperlukan konfigurasi khusus dan sangat rumit jika Anda ingin melakukan rewrite seperti dengan menggunakan .htaccess.
Apache

—Keunggulan—
Mudahnya konfigurasi server seperti dalam penggunaan mod_rewrite dengan menggunakan .htaccess. Hal tersebut sangat dibutuhkan agar sebuah website dapat berjalan dengan baik.

—Kelemahan—

Apache memperlakukan file dinamis dan statis pada sebuah website dengan perlakuan yang sama yang artinya sebuah file statis seperti gambar dan lain-lain akan diload dengan beban yang sama dengan file dinamis, seperti php. Hal ini tentu tidak bagus karena akan memperlambat kinerja website dan beban server jadi meninggi, apalagi jika ditambah Anda memiliki banyak file statis dan pengunjung yang banyak.

Solusi:

Untuk mengatasi hal tersebut, maka kita dapat menggabungkan kedua web server tersebut dan berjalan bersamaan dimana nantinya Nginx akan bertindah sebagai proxy yang akan meload file-file statis dan dinamis dengan cepat. Sedangkan Apache akan berada di belakang Nginx dan Anda tetap akan dapat menggunakan mod_rewrite. Berikut untuk konfigurasi Nginx + Apache di panel Webuzo.

Login di root Anda dan buat folder backup dengan perintah:

[toggle state=”open” ]mkdir /backup[/toggle]

Backup ketiga file berikut ini sebelum melakukan konfigurasi /usr/local/apps/apache/etc/httpd.con , /usr/local/apps/apache/etc/conf.d/webuzoVH.conf dan /usr/local/apps/nginx/etc/conf.d/common dengan perintah berikut:

[toggle state=”open” ]# cp /usr/local/apps/apache/etc/httpd.con /backup[/toggle]

[toggle state=”open” ]# cp /usr/local/apps/apache/etc/conf.d/webuzoVH.conf /backup[/toggle]

[toggle state=”open” ]# cp /usr/local/apps/nginx/etc/conf.d/common /backup[/toggle]

Setelah itu, ubah “Listen 80” ke “Listen 127.0.0.1:81″ pada /usr/local/apps/apache/etc/httpd.conf dengan perintah berikut:

[toggle state=”open” ]vim /usr/local/apps/apache/etc/httpd.conf[/toggle]

listen

Ubah file /usr/local/apps/apache/etc/conf.d/webuzoVH.conf dari port ipanda:80 ke 127.0.0.1:81

[toggle state=”open” ]vim /usr/local/apps/apache/etc/conf.d/webuzoVH.conf [/toggle]

listen2

ubah file isi file commond pada /usr/local/apps/nginx/etc/conf.d/common menjadi:

# Redirect server error pages to the static pages
error_page 500 502 504 /500.html;
location = /500.html {
root /usr/local/apps/nginx/etc/conf.d;
internal;
}

error_page 404 /404.html;
location = /404.html {
root /usr/local/apps/nginx/etc/conf.d;
internal;
}

error_page 497 /497.html;
location = /497.html {
root /usr/local/apps/nginx/etc/conf.d;
internal;
}

error_page 555 /555.html;
location = /555.html {
root /usr/local/apps/nginx/etc/conf.d;
internal;
}

location @maintenance {
root /usr/local/apps/nginx/etc/conf.d;
rewrite ^(.*)$ /noindex.html break;
}

location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:81;
}
location = / {

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:81;
}

# For userdir files
location ~* ^/~(.+?)(/.*\.php)$ {

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:81;
}

# For userdir files
location ~ ^/~(.+?)(/.*)?$ {

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:81;
}

# To catch index.php by default
location ~ (index.php|/)$ {

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:81;
}

location ~ \.pl|cgi$ {

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:81;
}

Restart nginx dan apache Anda:

[toggle state=”open” ]service httpd restart[/toggle]

[toggle state=”open” ]service nginx restart[/toggle]

 

Selesai.


× Ada yang ditanyakan?