Nginx学习指南之循序渐进(一)

Nginx学习指南之循序渐进(一)

一、简介

Nginx(engine x)是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。Nginx 是由俄罗斯的程序设计师lgor sysoev所开发,将其源码以类BSD许可证的形式发布,可以运行在UnixGUN/LinuxsolarisBSDMicrosoft Windows等操作系统中,因其稳定性、丰富的功能模块、低系统资源消耗而文明;现在Nginx已经在众多流量很大的网站上使用了很长时间,如国外的网站YandexMial.RuVkontakteRambler等,在国内使用Nginx的网站如:搜狐、新浪、腾讯、金山网络等。

二、Nginx的优越性

1)作为Web服务器,Nginx处理静态文件、索引文件以及自动索引的效率非常高。

2)作为代理服务器,Nginx可以使用缓存加速反向代理,提高网站的运行速度。

3)作为负载均衡器,Nginx既可以在内部直接支持RailsPHP程序对外服务,也可以支持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{}标签中添加,即便为最后一个“}”之前,操作如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# Add virtual host 192.168.8.8of 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.10of 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的虚拟主机配置成功了,希望此篇文档能给大家带来一些帮忙。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章