不应该是家,窝更适合一点

Web服务器——nginx

上一篇 / 下一篇  2012-06-20 11:03:00 / 个人分类:测试设计

这两天又一次搭建了下nginx集群服务器,感慨些许,之所以说是又一次,是因为去年的时候在测试服务器上搭建过一次,当时得出的结论是,很简单,很easy就搞定了。这两天再研究的时候,却发现上传接触到的只是皮毛而已。于是在晚上找了份资料,回家也翻了下前段时间买的一本书,发现有点意思:

1、它是个什么东东?

俄国佬(名字不用管他了)开发的一款可以替代apache的高性能web服务器,支持高并发(50000),而CPU,内存等系统资源占用比较少,运行非常稳定。非常小,只有几百kb。国内很多知名门户都用它做web服务器或反向代理服务器。

2、安装(基于liunxOS

tar  zxvf  ***.tar.gz

cd ***

./configure

make

make install

以前都是通过上面的命令,以最简单的方法安装一个软件,这次发现:./configure后面有很多编译选项,可以指定不同配置文件安装到不同路径;指定不同用户,组;开启/禁用某些配置,模式等。


3nginx配置

编辑配置文件:nginx.conf ,下面列出目前用到的一些配置,其他的还在研究中

1.下面这张图是根据自己理解画的,可能不完整或者有不足。

2.打开配置文件:vim nginx.conf,配置如下


#nginx 用户组
user  nobody;
#启动的nginx 进程数
worker_processes  1;
#nginx日志
error_log  logs/error.log;
error_log  logs/error.log  notice;
error_log  logs/error.log  info;

events {
   use epoll;# epoll Linux 下性能最好的event模式
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
#日志格式
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '"$status" $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    sendfile        on;
      keepalive_timeout  65;
upstream bap {
server 127.0.0.1:8082weight=20; #还有其他参数,暂时先不说明
server 127.0.0.1:8081 weight=10;

  }

    server {
        listen       8088;
        server_name  192.168.90.181:8088;

        charset utf-8;

        #access_log  logs/host.access.log  main;
location ~ ^/NginxStatus/ {
     stub_status on; #Nginx 状态监控配置
     access_log off;
  }

        #location1 / {
         #   root   html;
        #    index  index.html index.htm;
        location / {
            proxy_pass      http://bap/;
            proxy_set_header  X-Real-IP  $remote_addr;
            client_max_body_size  100m;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
}
q
3).配置好后,启动:

/usr/local/nginx/sbin/nginx
4.测试验证:
在浏览器中输入,192.168.90.181:8088  ok,环境启动好了(预先在服务器上安装了两个BAP的环境),登录,正常。停掉其中任一台BAP环境,继续操作,没有问题。

4、动静态页面分离
1.静态页面处理
通过正则表达式,我们可让 Nginx 识别出各种静态文件,例如 images 路径下的所有请求可以写为:

location ~ ^/images/ {
    root /opt/webapp/images;
}

而下面的配置则定义了几种文件类型的请求处理方式。

location ~ \.(htm|html|gif|jpg|jpeg|png|bmp|ico|css|js|txt)$ {
    root /opt/webapp;
    expires 24h;
}

对于例如图片、静态 HTML 文件、js 脚本文件和 css 样式文件等,我们希望 Nginx 直接处理并返回给浏览器,这样可以大大的加快网页浏览时的速度。因此对于这类文件我们需要通过 root 指令来指定文件的存放路径,同时因为这类文件并不常修改,通过 expires 指令来控制其在浏览器的缓存,以减少不必要的请求 

2.动态页面处理

location / {
    proxy_pass        http://localhost:8080;
    proxy_set_header  X-Real-IP  $remote_addr;
}


上面的配置(最简单的),通过proxy_pass 指令传送给后端的服务器(virgo)来处理动态请求。

5、负载均衡
# ip_hash


upstream bap {
server 127.0.0.1:8082 weight=20; #还有其他参数,暂时先不说明
server 127.0.0.1:8081 weight=10;
  }

Weight --权重

ip_hash--ip_hash无法实现负载均衡,而且后端服务器设置的权重将不起作用。那么ip_hash作用是什么呢?加上ip_hash可以保证一台客户端发送到请求始终被分配到同一后端服务器上。避免session失效。

6、监控


配置
下面信息可以做到nginx的后台监控
location ~ ^/NginxStatus/ {
     stub_status on; #Nginx 状态监控配置
     access_log off;
  }
监控到的内容包括:
当前nginx正处理的活动连接数
处理总数,成功多少,失败多少
l nginx 读取到客户端的 Header 信息数
l nginx 返回给客户端的 Header 信息

7、缓存(需要在网上下载依赖包,比较麻烦,还没有搞)

8、其他深入研究,留待研究后再交流

PS:发现word上画的图在这里都显示不出来,只好去掉了;样式真难搞,土了点 


TAG: nginx Nginx NGINX web Web WEB 服务器

 

评分:0

我来说两句

Open Toolbar