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进程以什么组的身份运行 拥有帝国一切,皆有可能。欢迎访问phome.net 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; } ... 拥有帝国一切,皆有可能。欢迎访问phome.net }
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,配置便成功了. 拥有帝国一切,皆有可能。欢迎访问phome.net |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |