There is no home like Apache mod_php, itu mungkin yang dikatakan PHP. Performa PHP yang berjalan sebagai Fast-CGI process terkadang masih kalah dengan performa mod_php. Keunggulan utama Nginx adalah memory kecil dan sangat cepat dalam memproses static content. Untuk itu kenapa tidak memakai keunggulan dari keduanya sekaligus, mod_php sebagai PHP handler dan Nginx sebagai static content handler. It makes everyone happy :).
| Web Server | Interface | Alamat IP | Keterangan |
|---|---|---|---|
| Nginx | eth0 | 192.168.1.10 | Static content URL » /static |
| Apache | lo | 127.0.0.1 | Dinamic content handler (PHP) |
Nginx
Konfigurasi file /etc/nginx/nginx.conf.
user www-data;
worker_processes 2;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
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;
server_names_hash_bucket_size 64;
sendfile on;
tcp_nopush on;
keepalive_timeout 10;
gzip on;
gzip_comp_level 2;
gzip_vary on;
gzip_disable "MSIE [1-6]\.";
gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript
image/jpeg image/png image/gif;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/site-enabled/*;
}
Konfigurasi /etc/nginx/conf.d/proxy.conf
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; client_header_buffer_size 64k; proxy_connect_timeout 30; proxy_send_timeout 60; proxy_read_timeout 30; proxy_buffer_size 32k; proxy_buffers 64 32k; proxy_busy_buffers_size 128k;
Konfigurasi website dengan host example.com /etc/nginx/site-available/example.com.
server {
listen 192.168.1.10:80;
server_name example.com;
# lempar semua request ke Apache kecuali ada konfigurasi directive location lain
location / {
proxy_pass http://127.0.0.1;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# lokasi static content
# URL yang diawali http://example.com/static akan langsung dihandle nginx dan tidak dilempar ke apache
#
# Contoh:
# http://example.com/static/js/jquery.js
# http://example.com/static/css/style.css
location /static {
expires max; # masa expires maximum agar browser menyimpan cache lebih lama
# dokumen webroot dari URL /static
root /var/www/vhosts/example.com
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
}
Apache
Konfigurasi file /etc/apache2/ports.conf.
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and
# README.Debian.gz
NameVirtualHost 127.0.0.1:80
Listen 127.0.0.1
#<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
# Listen 443
#</IfModule>
#<IfModule mod_gnutls.c>
# Listen 443
#</IfModule>
Konfigurasi virtual host file /etc/apache2/site-available/example.com.
<VirtualHost 127.0.0.1:80> ServerAdmin you@example.com ServerName example.com # Flag berikut ditujukan untuk PHP debugging dalam proses development # Hapus/beri tanda komentar jika masuk tahap production <IfModule mod_php5.c> php_admin_flag engine on php_flag display_errors on # E_ALL | E_STRICT = 32767 php_value error_reporting 32767 </IfModule> DocumentRoot /var/www/vhosts/rio.lokasiponsel.com/php <Directory /> Options FollowSymLinks # Ganti None dengan All jika ingin support .htaccess AllowOverride None </Directory> ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel error CustomLog /var/log/apache2/access.log combined </VirtualHost>
Install mod_rpaf agar IP address yang dilog apache bukan 127.0.0.1 tetapi IP dari user asli yang mengakses via reverse proxy.
# apt-get install libapache2-mod-rpaf
Aktifkan vhost
# cd /etc/nginx/site-enabled # ln -s ../site-available/example.com # cd /etc/apache2/site-enabled # ln -s ../site-available/example.com
Restart masing-masing service kemudian cek apakah keduanya sudah bind di port 80.
# service apache2 restart # service nginx restart # netstat -ntap | grep :80 tcp 0 0 127.0.0.1:80 0.0.0.0:* LISTEN 4316/apache2 tcp 0 0 192.168.1.10:80 0.0.0.0:* LISTEN 4108/nginx.conf
0 comments:
Post a Comment