一:nginx简介
Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,最初供俄国大型的入口网站及搜寻引擎Rambler(俄文:Рамблер)使用。 其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页伺服器中表现较好.目前中国大陆使用nginx网站用户有:新浪、网易、 腾讯,另外知名的微网志Plurk也使用nginx。
Nginx 是一个很牛的高性能Web和反向代理服务器, 它具有有很多非常优越的特性:
作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。在高连接并发的情况下,Nginx是Apache服务器不错的替代品: Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一. 能够支持高达 50,000 个并发连接数的响应, 感谢Nginx为我们选择了 epoll and kqueue 作为开发模型.
Nginx作为负载均衡服务器: Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务, 也可以支持作为 HTTP代理 服务器对外进行服务. Nginx采用C进行编写, 不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多. 。Nginx可作为7层负载均衡服务器来使用。
作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器), Last.fm 描述了成功并且美妙的使用经验.
总体来说nginx的有以下八大优点:
1.高并发连接:官方测试能支撑5万并发连接,在实际生产环境中跑到2,~3W并发连接。
2.内存消耗少:在3W并发连接下,开启的10个NGINX进程才消耗150M内存(15M*10=150M)
3.配置文件非常简单:风格跟程序一样通俗易懂。
4.成本低廉:Nginx作为开源软件,可以免费使用,而购买F5 BIG-IP、NetScaler
等硬件负载均衡交换机则需要十多万至几十万人民币。
5.支持rewrite重写规则:能够根据域名、URL的不同,将HTTP请求分发到不同的后端服务器群组。
6.内置的健康检查功能:如果Nginx Proxy后端的后台web服务器宕机了,不会音响前端访问。
7.节省带宽:支持GZIP压缩,可以添加浏览器本地缓存的Header头。
8.稳定性高:用于反向代理,宕机的概率微乎其微。
二:具体配置步骤
//nginx编译安装及管理命令
shell> ./configure --prefix=/usr/local/nginx --user=apache --group=apache --with-http_ssl_module --with-http_stub_status_module --with-http_gzip_static_module && make && make install
#参数解释
--prefix=PATH set installation prefix
--user=USER set non-privileged user for
--group=GROUP set non-privileged group for
--with-http_ssl_module enable ngx_http_ssl_module
--with-http_stub_status_module enable ngx_http_stub_status_module ---支持监控
--with-http_gzip_static_module enable ngx_http_gzip_static_module ---支持压缩
#启动nginx
shell> /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
#测试nginx配置文件格式是否正确
shell> /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
#关闭nginx
shell> cat /usr/local/nginx/logs/nginx.pid | xargs kill -TERM
#重启nginx
shell> cat /usr/local/nginx/logs/nginx.pid | xargs kill -HUP
HUP 重启
TERM,INT 快速停止
USR1 重新打开日志文件,用于日志切割
USR2 平滑升级可执行程序
QUIT 从容关闭
WINCH 从容关闭工作进程
//基于IP的虚拟主机
#环境说明
1.centos6.4 IP:10.10.54.157
2.编译安装nginx,搭建web服务器,并实现基于IP的虚拟主机
3.一个IP对应一个域名,输入不同的域名DNS解析出不同的IP
4.监听端口:(基于IP)
10.10.54.157:80 www.zijian.com
10.10.54.154:80 bbs.zijian.com
5.
shell> ifconfig eth0:0 10.10.54.154 netmask 255.255.255.0
#配置步骤
shell> vim /usr/local/nginx/cong/nginx.conf
------------------------------------------------------
user apache apache;
worker_processes 2;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
server {
listen 10.10.54.157:80; #这个IP根目录是/var/www/html
server_name 10.10.54.157;
charset uft-8;
access_log logs/www.access.log main;
root /var/www/html;
location / {
index index.html index.htm;
}
}
server {
listen 10.10.54.151:80; #这个IP根目录是/var/www/bbs
server_name 10.10.54.151;
access_log logs/bbs.zijian.com.log;
root /var/www/bbs;
location / {
index index.html index.htm;
}
}
}
-------------------------------------------------------
//基于域名的虚拟主机并实现代理
#环境说明
1.nginx服务器 IP:10.10.54.157
2.基于域名的服务器,一个IP对应多个域名,使用不同的域名访问不同的网站(即不同的根目录)
3.基于域名的nginx web服务器,同一个IP映射多个域名(www.zijian.com,bbs.zijian.com)
#配置文件修改
shell> vim /usr/local/nginx/cong/nginx.conf
------------------------------------------------------
http {
server {
listen 80; #www.zijian.com对应的网站是/var/ww/html
server_name www.zijian.com;
charset uft-8;
access_log logs/www.access.log main;
root /var/www/html;
location / {
index index.html index.htm;
}
}
server {
listen 80; #bbs.zijian.com对应的网站是/var/www/bbs
server_name bbs.zijian.com;
access_log logs/bbs.zijian.com.log;
root /var/www/bbs;
location / {
#当在bbs.zijian.com:80端口监听到连接请求时,通过nginx代理到10.10.54.150:1500上面,当然10.10.54.150:1500必须处于正常监听状态
proxy_pass http://10.10.54.150:1500;
}
}
}
#浏览器输入:www.zijian.com 时访问html,输入bbs.zijian.com 时访问bbs