Linux系统上配置Nginx+Mongrel cluster
Nginx不仅是一个小巧且高效的HTTP服务器,也可以做一个高效的负载均衡反向代理,通过它接受用户的请求并分发到多个Mongrel进程可以极大提高Rails应用的并发能力。下面介绍一下如何在一台服务器上配置Nginx + Mongrel cluster。
获得Nginx,这里我们假设大家是通过自己编译,并配置了默认的编译的参数,此处使用的是Nginx 0.5.x版。
配置Mongrel cluster
我们还需要获得Mongrel和其Cluster插件(用来方便得启动多个Mongrel进程),如下通过gem进行安装:
gem i -y mongrel mongrel_cluster
然后建立mongrel_cluster的配置文件。进入Rails应用即你的程序的根部目录(以下假设/usr/rails),运行:
mongrel_rails cluster::configure
然后mongrel_cluster便会在config目录下生成一个mongrel_cluster.yml,内容如下:
---
log_file: log/mongrel.log
port: 3000
pid_file: tmp/pids/mongrel.pid
servers: 2
我们可以通过修改其中的设置来更改mongrel_cluster的运行,这个范例配置省略了一些其他参数,具体的参数的含义如下:
address: 指定绑定的地址
port: 指定mongrel_cluster所运行的mongrel进程从哪个端口开始绑定
servers: 指定同时运行多少个mongrel进程,结合port参数,就是表示port到port+servers-1(含)的端口将被使用
environment: 指定Rails运行的配置环境
user: 指定mongrel进程以什么用户的身份运行
group: 指定mongrel进程以什么组的身份运行
cwd: 指定mongrel运行的根目录
log_file: 各个mongrel进程的输出日志的位置,相对于cwd的目录,会在文件的扩展名之前加上各进程对应的端口号
pid_file: 各个mongrel进程的pid文件的位置,相对于cwd的目录,会在文件的扩展名之前加上各进程对应的端口号
大家可以根据自己的具体情况进行修改。以下是一个完整的mongrel_cluster.yml配置文件:
---
user: apache
cwd: /usr/rails/
log_file: log/mongrel.log
port: 3000
environment: production
group: apache
address: 127.0.0.1
pid_file: tmp/pids/mongrel.pid
servers: 5
接下来便可以启动mongrel_cluster了,以下是控制mongrel_cluster的命令:
mongrel_rails cluster::start #启动
mongrel_rails cluster::restart #重启
mongrel_rails cluster::stop #停止
配置Nginx负载均衡反向代理
利用nginx的upstream指令配置哪些服务器需要进行负载均衡。在这里也可以说直接说告诉nginx mongrel_cluster在哪些地址和端口上,按照上面的mongrel_cluster的配置,在nginx中应该这样写:
...
http{
...
#upstream段要放在http段中
upstream mongrel {
server 127.0.0.1:3000;
server 127.0.0.1:3001;
server 127.0.0.1:3002;
server 127.0.0.1:3003;
server 127.0.0.1:3004;
}
...
}
upstream指令后面的mongrel指定了这批上游服务器的的名称,大家可以使用别的名字。每个server指令指定了一个服务器,server指令还支持别的参数可以设置重试次数和超时时间以及不同服务器的权重。
接下来配置nginx在接受哪些http请求时转发到mongrel cluster,因为nginx处理静态文件的速度远远高于mongrel,所以一般当请求的路径不存在的时候才将请求转发到mongrel cluster:
server {
listen 80;
server_name example.com;
#设置服务器根目录为rails应用的public目录,这个目录下放了对外的静态文件
root /usr/rails/public;
index index.html index.htm;
location / {
#转发时保留原有请求的IP信息和HOST信息
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect false;
if (-f $request_filename/index.html) {
rewrite (.*) $1/index.html break;
}
if (-f $request_filename.html) {
rewrite (.*) $1.html break;
}
#当请求的文件不存在,转发到mongrel cluster
if (!-f $request_filename) {
proxy_pass http://mongrel;
break;
}
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
然后重启Nginx,配置便成功了。
关键词:Linux,Nginx,Mongrel,cluster
相关阅读
- 04-09红旗Linux 6.0桌面版下载地址集合(sp1,sp2,sp3)
- 09-26Linux 重启命令
- 09-03linux中文文件名乱码的解决办法(安装中文支持包)
- 07-09LINUX安全加固
- 07-09Linux远程管理器xshell和xftp使用教程
- 11-18linux下FTP、SFTP命令详解
- 02-15linux sftp介绍
- 04-17Linux VPS CentOS 5 实例图解搭建网站(新手必看)
- 08-27Linux安装配置maven以及搭建nexus服务器
- 04-04Linux 防火墙配置基础篇
阅读本文后您有什么感想? 已有 人给出评价!
用户评论
热门评论
最新评论
相关软件
热点图文
- 09-05407 Proxy Authentication Required错误的解决办法
- 04-05实用的Linux网络配置工具netconf
- 02-25linux下安装联想的LJ2200打印机驱动
- 05-04Linux(CentOS)服务器/VPS上安装DirectAdmin
- 07-17Linux VPS怎么绑定域名建站
- 09-08RedHat Linux 红旗9.0安装图解
- 05-04Linux系统上配置Nginx+Mongrel cluster
- 04-04Linux 防火墙配置基础篇
- 04-17Linux VPS CentOS 5 实例图解搭建网站(新手必看)
- 07-18Centos 硬盘挂载教程