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的虛擬主機配置成功了,希望此篇文檔能給大家帶來一些幫忙。


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