Linux/Unix平台上搭建Nginx+Mongrel Cluster实现Rails高负载应用

本文讲述如何在Linux/Unix平台上面搭建Nginx+Mongrel
Cluster实现Rails高负载的应用。

以下为字符串匹配操作符:
~  为区分大小写匹配
~* 为不区分大小写匹配
!~和!~*分别为区分大小写不匹配及不区分大小写不匹配

安装PCRE库

1: 限制某些类型的客户端的访问

Ruby代码 

view
plainprint?

  1. $ ftp ftp.csx.cam.ac.uk  
  2. username: anonymous  
  3. > cd pub/software/programming/pcre/  
  4. > get pcre-7.4.tar.bz2  
  5.   
  6. > quit  
  7. $ tar -jxvf pcre-7.4.tar.bz2  
  8. $ cd pcre-7.4  
  9. $ ./configure  
  10. $ make  
  1.    
  2. location / {  
  3. if ($http_user_agent ~ MSIE) {  
  4. return 503;  
  5.   }  
  6. }#限制IE访问  

不需要安装它,只是编译nginx时需要用到而已。

如果把MSIE改成 Mozilla 就基本上把IE和firefox这样pc浏览器限制了
2和3主要是针对盗链做处理

安装nginx

2:针对不同的文件类型

Ruby代码
 图片 1

view
plainprint?

  1. $ wget   
  2.   
  3. $ tar -zxvf nginx-0.5.32.tar.gz  
  4. $ cd nginx-0.5.32  
  5. $ ./configure –with-pcre=../pcre-7.4  
  6. $ make  
  7. $ sudo make install  
  1.    
  2. location ~ .*\.(wma|wmv|asf|mp3|mmf|zip|rar|jpg|gif|png|swf|flv)$ {  
  3.      if ($http_referer ~* hecks.tk) {  
  4.      #rewrite ^/ ;  
  5.      return 403;  
  6.       }  
  7. }  

配置nginx
修改/usr/local/nginx/conf/nginx.conf:

3:针对不同的目录

Ruby代码  

view
plainprint?

  1. user  someuser;  
  2. worker_processes  1;  
  3.   
  4. error_log logs/error.log  notice;  
  5.   
  6. pid logs/nginx.pid;  
  7.   
  8. events {  
  9.     worker_connections  1024;  
  10. }  
  11.   
  12. http {  
  13.     include       conf/mime.types;  
  14.     default_type  application/octet-stream;  
  15.   
  16.     access_log  logs/access.log;  
  17.   
  18.     sendfile        on;  
  19.     tcp_nopush     on;  
  20.   
  21.     keepalive_timeout  65;  
  22.     tcp_nodelay        on;  
  23.   
  24.     gzip  on;  
  25.     gzip_min_length  1100;  
  26.     gzip_buffers     4 8k;  
  27.     gzip_types       text/plain;  
  28.   
  29.     upstream mongrel {  
  30.         server 127.0.0.1:8100;  
  31.         server 127.0.0.1:8101;  
  32.         server 127.0.0.1:8102;  
  33.         server 127.0.0.1:8103;  
  34.     }  
  35.   
  36.     server {  
  37.         listen       80;  
  38.         server_name  your.server.com;  
  39.         location / {  
  40.             proxy_pass ;  
  41.         }  
  42.   
  43.         root /home/your/app/path;  
  44.   
  45.         access_log  off;  
  46.         rewrite_log on;  
  47.   
  48.         location ~ ^/$ {  
  49.             if (-f /index.html){  
  50.                 rewrite (.*) /index.html last;  
  51.             }  
  52.             proxy_pass  ;  
  53.             proxy_set_header   Host             $host;  
  54.         }  
  55.   
  56.         location / {  
  57.             if (!-f $request_filename.html) {  
  58.                 proxy_pass  ;  
  59.             }  
  60.             rewrite (.*) $1.html last;  
  61.         }  
  62.   
  63.         location ~ .html {  
  64.             root /home/your/app/path;  
  65.         }  
  66.   
  67.         location ~* ^.+.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|  
  68.                                  exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|mov)$ {  
  69.             root /home/your/app/path;  
  70.         }  
  71.         location / {  
  72.             proxy_pass  ;  
  73.             proxy_redirect     off;  
  74.             proxy_set_header   Host             $host;  
  75.             proxy_set_header   X-Real-IP        $remote_addr;  
  76.             proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;  
  77.         }  
  78.     }  
  79. }  
  1.    
  2. location /img/ {  
  3.     root /data/img/;  
  4.    if ($http_referer ~* hecks.tk) {  
  5.              rewrite  ^/    
  6.              #return   403;  
  7.     }  
  8. }  

启动 nginx
$ sudo /usr/local/nginx/sbin/nginx
配置启动 mongrel cluster

另外的一个nginx配置例子

相关文章

Comment ()
评论是一种美德,说点什么吧,否则我会恨你的。。。