linuxnginx:Linux系统上配置Nginx+Mongrel cluster



=a14c id=zoom twffan="done"> 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负载均衡反向代理 利用nginxupstream指令配置哪些服务器需要进行负载均衡在这里也可以说直接说告诉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 clusternginx处理静态文件速度远远高于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__header X-Real-IP $remote_addr; proxy__header X-Forwarded-For $proxy_add_x_forwarded_for; proxy__header Host $http_host; proxy_redirect false; (-f $request_filename/index.html) { rewrite (.*) $1/index.html ; } (-f $request_filename.html) { rewrite (.*) $1.html ; } #当请求文件不存在转发到mongrel cluster (!-f $request_filename) { proxy_pass http://mongrel; ; } } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } 然后重启Nginx配置便成功了

Tags:  nginx0.6.31 welcometonginx nginx linuxnginx

延伸阅读

最新评论

发表评论