Kumpulan Resep Nginx
From wiki.ngadimin.org
Contents |
CGI di nginx, solusi sederhana
Nginx memang di desain untuk highload server. Dan cgi tidak cocok dengan lingkungan tersebut, jika Anda menjalankan cgi di apache, cgi adalah bottle neck pertama, bahkan sebelum apache Anda terasa lambat. Jadi jangan berharap fitur cgi akan ada di nginx.
Jadi kalau mau menjalankan cgi di nginx bagaimana? Gunakan saja http server yang cukup ringan seperti thttpd.
http://ngadimin.org/2009/02/07/menjalankan-cgi-di-nginx-minta-bantuan-thttpd-saja/
Default Virtual Host
server {
server_name _;
root html;
}
Geo IP dan Distributed Server
Anda memiliki banyak jaringan yang lokasinya berjauhan. Anda ingin user mengakses server terdekat dengan jaringan mereka. User Bekasi ketika mengakses server utama, akan diredirect ke server bekasi.domain.com, dan user Tangerang akan diarahkan ke tangerang.domain.com.
http {
geo $geo {
default default;
1.1.1.0/24 bekasi;
1.1.2.0/24 tangerang;
1.1.3.0/24 tangerang;
...
}
server {
location / {
rewrite ^(.*)$ http://$geo.domain.com$1 permanent;
}
...
}
...
}
Hotlink Protection
location ~ \.(jpg|png|gif)$ {
valid_referers server_names blocked none frienddomain.com *.frienddomain.com ;
if ($invalid_referer) {
return 403;
}
}
Geo IP dan Load Balancer
Anda punya banyak backend server, dan ingin di balance berdasarkan lokasi pengaksesnya. Jadi user dari Bekasi akan diarahkan ke cluster server bekasi, untuk user dari Tangerang akan diarahkan ke cluster server tangerang.
http {
geo $geo {
default default;
1.1.1.0/24 bekasi;
1.1.2.0/24 tangerang;
1.1.3.0/24 tangerang;
...
}
upstream bekasi.server {
....
}
upstream tangerang.server {
....
}
upstream default.server {
....
}
server {
location / {
proxy_pass http://$geo.server;
}
...
}
...
}
Maintenance Page
Yeah we are triggering a maintenance page via the existance of a file. Here is how it looks in the config file.
# Rewrite all the requests to the maintenance.html page if it exists.
if (-f $document_root/system/maintenance.html) {
return 503;
}
error_page 503 @503;
location @503 {
rewrite ^(.*)$ /system/maintenance.html break;
}
This means that if $document_root/system/maintenance.html exists, then only serve that file and nothing else for every request.
Rewrite, gak usah pake www
server {
server_name ngadimin.org www.ngadimin.org;
if ($host !~ ^ngadimin\.org$) {
rewrite ^.+ http://ngadimin.org$uri permanent;
break;
}
}
