Nginx学习指南之循序渐进(一)
一、简介
Nginx(‘engine x’)是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。Nginx 是由俄罗斯的程序设计师lgor sysoev所开发,将其源码以类BSD许可证的形式发布,可以运行在Unix、GUN/Linux、solaris、BSD、Microsoft Windows等操作系统中,因其稳定性、丰富的功能模块、低系统资源消耗而文明;现在Nginx已经在众多流量很大的网站上使用了很长时间,如国外的网站Yandex、Mial.Ru、Vkontakte、Rambler等,在国内使用Nginx的网站如:搜狐、新浪、腾讯、金山网络等。
二、Nginx的优越性
1)作为Web服务器,Nginx处理静态文件、索引文件以及自动索引的效率非常高。
2)作为代理服务器,Nginx可以使用缓存加速反向代理,提高网站的运行速度。
3)作为负载均衡器,Nginx既可以在内部直接支持Rails和PHP程序对外服务,也可以支持HTTP代理服务器对外进行服务,同时还支持简单的容错和利用算法进行负载均衡。
4)Nginx采用内核epoll模型,可以支持更多的并发连接,最大可以支持对50000个并发连接的响应,而且只占用很低的内存资源。
5)Nginx安装简单,启动特别容易,并且可以做到7*24不间断运行,即使运行数月也无需重新启动。
提示:若想了解更多的Nginx特性,可以浏览Nginx官方网站http://www.nginx.org
三、Nginx安装与配置
Nginx的官方网站http://www.nginx.org,从这里可以获取到Nginx的最新版本,Nginx的版本分为:开发版、稳定版、历史稳定版。开发版更新比较快,为测试Nginx最新的功能和bug的修复,同时也会出现新的bug。开发版一旦稳定下来,就会被加入稳定版本中。稳定版一般更新比较慢,它是由开发版测试后发布的版本,所以bug较少,可以作为生成环境的首选。历史稳定版,是以往稳定版的过渡,不包含最新的功能,因此建议在生产环境下使用较新的稳定版。
http://nginx.org/download/nginx-1.2.9.tar.gz
提示:若想了解1.2.x版本的特性,可以浏览http://nginx.org/en/CHANGES-1.2
3.1 Nginx稳定版下载
3.2 安装Nginx
提示:
Nginx的安装非常简单,编译安装的Nginx可以根据网站的需求来选择对应的模块,如果是新手,可以通过./configure --help了解各模块的功能,也可以阅读Nginx在线文档http://nginx.org/cn/docs/,其中包含各模块的示例文件,相信你会受益匪浅。
[root@keepalived_master nginx-1.2.9]# groupadd nginx
[root@keepalived_master nginx-1.2.9]# useradd -s /sbin/nologin -M -g nginx nginx
[root@keepalived_master nginx-1.2.9]# ./configure \
--prefix=/application/nginx-1.2.9 \ #指定Nginx程序的安装目录
--with-poll_module \ #激活Nginx epoll模块
--with-ipv6 \ #支持IPv6功能
--group=nginx \ #设置nginx用户运行Nginx工作进程
--user=nginx \ #设置nginx用户组运行Nginx工作进程
--with-http_ssl_module \ #激活Nginx ssl(安全套接层)模块
--with-http_image_filter_module \ #激活Nginx image过滤模块
--with-http_gzip_static_module \ #激活Nginx gzip模块,传输压缩
--with-http_stub_status_module #激活 Nginx status模块
[root@keepalived_master nginx-1.2.9]# make #编译
[root@keepalived_master nginx-1.2.9]# make install #编译安装
编译错误:
1)./configure: error: the HTTP image filter module requires the GD library.
You can either do not enable the module or install the libraries.
出现错误的原因,是因为--with-http_image_filter_module 模块,需要libgd库的支持;安装gd-devel即可解决。
提示:编译Nginx时,如果你需要用到ssl模块,那么你需要安装openssl-devel库,用到Gzip模块,需要安装zlib-devel库,用到rewrite模块,需要安装pcre-devel库;可以留意提示信息。
3.3 测试Nginx配置文件语法
[root@keepalived_master nginx-1.2.9]# /application/nginx-1.2.9/sbin/nginx -t
nginx: the configuration file /application/nginx-1.2.9/conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx-1.2.9/conf/nginx.conf test is successful
提示:编译安装之后,测试Nginx配置文件是否有误,若出现上述提示信息,则证明可以正常启动Nginx服务。
3.4 运行Nginx服务
[root@keepalived_master nginx-1.2.9]# /application/nginx-1.2.9/sbin/nginx
[root@keepalived_master nginx-1.2.9]# netstat -lntp | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 12478/nginx
3.5 测试Nginx是否能提供服务
[root@keepalived_master nginx-1.2.9]# curl -I http://192.168.10.170/index.html
HTTP/1.1 200 OK
Server: nginx/1.2.9
Date: Wed, 21 Aug 2013 22:41:30 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Wed, 21 Aug 2013 22:26:48 GMT
Connection: keep-alive
Accept-Ranges: bytes
3.5 Windows客户端测试
3.7 为Nginx程序目录建立软件接,方便将来版本升级
[root@keepalived_master nginx-1.2.9]# ln -s /application/nginx-1.2.9/ /application/nginx
[root@keepalived_master nginx-1.2.9]# ll /application/nginx
lrwxrwxrwx 1 root root 25 Aug 22 06:47 /application/nginx -> /application/nginx-1.2.9/
四、配置基于域名的虚拟主机
4.1 修改nginx配置文件,增加如下信息:
[root@keepalived_master ~]# vim /application/nginx/conf/nginx.conf
4.2 创建www.hello123.com网站根目录
[root@keepalived_master ~]# mkdir /application/nginx/html/www.hello123.com
[root@keepalived_master www.hello123.com]# echo "www.hello123.com" > index.html
4.3 测试配置语法
[root@keepalived_master ~]# /application/nginx/sbin/nginx -t
nginx: the configuration file /application/nginx-1.2.9/conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx-1.2.9/conf/nginx.conf test is successful
4.3 重启服务
[root@keepalived_master ~]# kill -HUP `cat /application/nginx/logs/nginx.pid`
[root@keepalived_master ~]# ps -ef | grep nginx| grep -v grep
root 12857 1 0 08:23 ? 00:00:00 nginx: master process /application/nginx/sbin/nginx
nginx 12858 12857 0 08:23 ? 00:00:00 nginx: worker process
4.4 测试基于域名的虚拟主机是否OK
[root@keepalived_master ~]# elinks --dump http://www.hello123.com
www.hello123.com
4.5 Windows客户端测试
五、配置基于IP的虚拟主机
5.1基于多IP的虚拟主机,首先需要配置多个IP地址,操作如下:
[root@keepalived_master ~]# ifconfig eth0:0 192.168.8.8 netmask 255.255.255.0
[root@keepalived_master ~]# ifconfig eth0:1 192.168.8.10 netmask 255.255.255.0
提示:我的网络环境IP有限制,所以由原来的192.168.10.0/24变成192.168.8.0/24;网卡的模式也由桥接变为NAT模式。
5.2 创建虚拟主机网页根目录
[root@keepalived_master ~]# mkdir /application/nginx/html/vhost_8.8
[root@keepalived_master ~]# mkdir /application/nginx/html/vhost_8.10
5.3 创建虚拟主机网站的首页文件
[root@keepalived_master ~]# cd /application/nginx/html/
[root@keepalived_master html]# echo "192.168.8.8" > ./vhost_8.8/index.html
[root@keepalived_master html]# echo "192.168.8.10" > ./vhost_8.10/index.html
5.4 修改配置Nginx配置文件
[root@keepalived_master ~]# vim /application/nginx/conf/nginx.conf
提示:下面的参数在http{}标签中添加,即便为最后一个“}”之前,操作如下:
# Add virtual host 192.168.8.8 of configure parameter server { listen 80; server_name 192.168.8.8; charset koi8-r; access_log logs/192.168.8.8_access.log main; location / { root /application/nginx/html/vhost_8.8; index index.html index.htm; } } # Add virtual host 192.168.8.10 of configure parameter server { listen 80; server_name 192.168.8.10; charset koi8-r; access_log logs/192.168.8.10_access.log main; location / { root /application/nginx/html/vhost_8.10; index index.html index.htm; } }
5.5 测试配置文件语法
[root@keepalived_master ~]# /application/nginx/sbin/nginx -t
nginx: the configuration file /application/nginx-1.2.9/conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx-1.2.9/conf/nginx.conf test is successful
提示:若出现上列的提示信息,则证明你的配置文件ok的,下一步需要做的便是重新加载配置文件,让其配置生效。操作如下:
[root@keepalived_master ~]# /application/nginx/sbin/nginx -s reload
5.6 测试基于IP的虚拟主机是否成功
[root@keepalived_master ~]# elinks --dump http://192.168.8.8/index.html
192.168.8.8
[root@keepalived_master ~]# elinks --dump http://192.168.8.10/index.html
192.168.8.10
5.7 windows客户端测试
192.168.8.8
192.168.8.10
提示:可以上图看出,基于IP的虚拟主机配置成功了,希望此篇文档能给大家带来一些帮忙。