nginx的安装及简单负载均衡配置

Nginx 是一个很强大的高性能Web和反向代理服务器,它具有很多非常优越的特性。本人目前所在公司也使用nginx,主要用来做负载均衡服务器。同时也可以作为邮件代理服务器。

  1. 1. nginx的安装。本人安装环境为ubuntu。可以选择编译源码的方式安装,但是比较繁琐。需要安装gzip\rewrite\ssl 等模块。同时下载nginx源码。编译。对于Ubuntu10.04 或者更新的版本,只是如下安装:
       1:  sudo -s
       2:  nginx=stable # use nginx=development for latest development version
       3:  add-apt-repository ppa:nginx/$nginx
       4:  apt-get update 
       5:  apt-get install nginx

可以安装最新的stable版本。需要在root权限下安装。如果安装过程中出现 add-apt-repository not existing 的错误。可以如下处理:

   1:  sudo -s
   2:  nginx=stable # use nginx=development for latest development version
   3:  echo "deb http://ppa.launchpad.net/nginx/$nginx/ubuntu lucid main" > /etc/apt/sources.list.d/nginx-$nginx-lucid.list
   4:  apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C300EE8C
   5:  apt-get update 
   6:  apt-get install nginx

至此安装完成。

2. nginx的简单实用。首先看一下nginx的位置:

~$ whereis nginx
nginx: /usr/sbin/nginx /etc/nginx /usr/local/nginx /usr/share/nginx /usr/share/man/man1/nginx.1.gz
安装完成之后分别在/usr/sbin/下 etc下等添加了nginx。可以在命令行直接输入nginx启动。
~$ nginx
在浏览器中输入localhost。看到欢迎页。启动成功!
这种启动方式使用的是/usr/sbin/下面的nginx命令。读取的配置是/etc/nginx下面的各种配置。可以简单看下其中的nginx.conf文件。运行是的错误日志等则保存在/var/log/nginx 下面,nginx.pid文件则在/var/run/目录下。下面简单看下nginx.conf文件:
   1:  user www-data;
   2:  worker_processes 4;
   3:  pid /var/run/nginx.pid;
   4:   
   5:  events {
   6:      worker_connections 768;
   7:      # multi_accept on;
   8:  }
   9:   
  10:  http {
  11:      sendfile on;
  12:      tcp_nopush on;
  13:      tcp_nodelay on;
  14:      keepalive_timeout 65;
  15:      types_hash_max_size 2048;
  16:   
  17:      include /etc/nginx/mime.types;
  18:      default_type application/octet-stream;
  19:   
  20:      access_log /var/log/nginx/access.log;
  21:      error_log /var/log/nginx/error.log;
  22:   
  23:      gzip on;
  24:      gzip_disable "msie6";
  25:   
  26:      include /etc/nginx/conf.d/*.conf;
  27:      include /etc/nginx/sites-enabled/*;
  28:  }
  29:   
其中定义了一些我们刚才说的文件的位置定义等等。同时在/usr/local/nginx目录下,也有一个nginx。同时其相关的日志文件、配置文件也在这个目录下。在这个目录下启动nginx。也是可以的。
重启或关闭nginx 。其中nginx.pic的路径为你本机环境的路径。
   1:  //重启
   2:  kill -HUP ·cat /your dir/nginx.pic
   3:  //关闭
   4:  kill ·cat /your dir/nginx.pic
3. 搭建简单的负载均衡服务器的配置。只需要修改nginx.conf 文件来实现。假如我们有一个web项目,部署在两个tomcat中。其中配置文件主要配置项是:
upstream mysvr{
    server 192.168.137.1:80 weight=8;
    server 192.168.137.1:8080 weight=1;
}
server {
        listen       80;
        server_name  localhost;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        location ~\.html$ {
            proxy_pass              http://mysvr;
            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;
        }
        location ~*\.(jpg|gif|png|css|js) {
            proxy_pass              http://mysvr;
        }
}

其中 upstream mysvr 定义了 服务器的位置及权重。其中权重越高,处理的请求就越多。server栏,配置了监听端口、泛域名、错误页。主要的是location中配置了,所有以.html结尾的请求,交给mysvr处理。mysvr就是我们前面定义的两个服务器,因此所有的.html结尾的请求,都会交给我们定义的两个服务器处理。这是因为我本地项目的spring 的 dispatcher 拦截的是.html请求。同理你可以配置成.do结尾,.jsp结尾。其中location的规则暂且不提。

        location ~ \.do$ {
             proxy_pass              http://localhost:8080;
             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;
        }                                                                        
        location ~ \.jsp$ {
            proxy_pass              http://localhost:8080;
            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;
        }
        location ^~/servlets/* {
            proxy_pass              http://localhost:8080;
            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;
        }

启动nginx。输入localhost/dqsjy/main.html。这是我本地测试项目的地址。顺利进入系统。可以分别在两个tomcat里面查看日志。看处理被分配的情况。