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