不应该是家,窝更适合一点
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后面有很多编译选项,可以指定不同配置文件安装到不同路径;指定不同用户,组;开启/禁用某些配置,模式等。
3、nginx配置
编辑配置文件: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;
}
监控到的内容包括:
l 当前nginx正处理的活动连接数
l 处理总数,成功多少,失败多少
l nginx 读取到客户端的 Header 信息数
l nginx 返回给客户端的 Header 信息
7、缓存(需要在网上下载依赖包,比较麻烦,还没有搞)
8、其他深入研究,留待研究后再交流
PS:发现word上画的图在这里都显示不出来,只好去掉了;样式真难搞,土了点
收藏
举报
TAG:
nginx
Nginx
NGINX
web
Web
WEB
服务器