隨着計算機與Internet技術的蓬勃發展,各類Web站點成爲直接面向用戶的中堅力量,在各類網站服務器軟件中,除了Apache外,還有一款輕量級的HTTP服務器軟件——Nginx,其穩定性、高效的特性逐漸被愈來愈多的用戶承認。本篇博客將搭建Nginx網站服務器,並配置基於域名的虛擬Web主機
html
Nginx的基本配置nginx
Nginx是由俄羅斯的Igor Sysoev專爲性能優化而開發,其最知名的優勢是它的穩定性和低系統資源消耗,以及對HTTP併發鏈接的高處理能力(單臺物理服務器可支持30 000~50 000個併發請求)。正由於如此,大量提供社交網絡、新聞資訊、電子商務及虛擬主機等服務的企業紛紛選擇Nginx來提供Web服務vim
1. 安裝Nginx瀏覽器
Nginx的安裝文件能夠從官方網站http://www.nginx.org/下載,下面以穩定片1.6.0爲例,介紹Nginx的安裝和運行控制性能優化
[root@localhost ~]# yum -y install pcre-devel zlib-devel //Nginx的配置須要pcre、zlib等軟件包的支持 [root@localhost ~]# useradd -M -s /sbin/nologin nginx //建立一個nginx的程序用戶 [root@localhost ~]# tar zxf nginx-1.6.0.tar.gz -C /usr/src/ [root@localhost ~]# cd /usr/src/nginx-1.6.0/ [root@localhost nginx-1.6.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module [root@localhost nginx-1.6.0]# make && make install //啓用http_stub_status_module模塊以支持狀態統計,便於查看服務器的鏈接信息 [root@localhost nginx-1.6.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ [root@localhost nginx-1.6.0]# nginx -t //檢查配置文件是否有錯誤 nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful [root@localhost nginx-1.6.0]# nginx //開啓服務 [root@localhost nginx-1.6.0]# netstat -anpt | grep nginx tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4614/nginx [root@localhost nginx-1.6.0]# killall -s HUP nginx //重載服務 [root@localhost nginx-1.6.0]# killall -s QUIT nginx //關閉服務
2. 編寫Nginx服務腳本bash
爲了使Nginx服務的啓動、中止等操做更加方便,能夠編寫Nginx服務腳本,並使用chkconfig和service工具來進行管理服務器
[root@localhost ~]# vim /etc/init.d/nginx #!/bin/bash # chkconfig: 2345 99 20 # description: Nginx Service Control Script PROG="/usr/local/nginx/sbin/nginx" PIDF="/usr/local/nginx/logs/nginx.pid" case "$1" in start) netstat -anplt |grep ":80" &> /dev/null && pgrep "nginx" &> /dev/null if [ $? -eq 0 ] then echo "Nginx service already running." else $PROG -t &> /dev/null if [ $? -eq 0 ] ; then $PROG echo "Nginx service start success." else $PROG -t fi fi ;; stop) netstat -anplt |grep ":80" &> /dev/null && pgrep "nginx" &> /dev/null if [ $? -eq 0 ] then kill -s QUIT $(cat $PIDF) echo "Nginx service stop success." else echo "Nginx service already stop" fi ;; restart) $0 stop $0 start ;; status) netstat -anplt |grep ":80" &> /dev/null && pgrep "nginx" &> /dev/null if [ $? -eq 0 ] then echo "Nginx service is running." else echo "Nginx is stop." fi ;; reload) netstat -anplt |grep ":80" &> /dev/null && pgrep "nginx" &> /dev/null if [ $? -eq 0 ] then $PROG -t &> /dev/null if [ $? -eq 0 ] ; then kill -s HUP $(cat $PIDF) echo "reload Nginx config success." else $PROG -t fi else $PROG -t fi else echo "Nginx service is not run." fi ;; *) echo "Usage: $0 {start|stop|restart|reload}" exit 1 esac [root@localhost ~]# chmod +x /etc/init.d/nginx [root@localhost ~]# chkconfig --add nginx //將nginx添加到系統服務
2. 配置文件nginx.conf
網絡
在Nginx服務器的主配置文件,包括全局配置、I/O事件配置、HTTP配置三大塊內容併發
(1)全局配置tcp
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf #user nobody; //運行用戶 worker_processes 1; //工做進程數量,可參考CPU核心總數來指定工做進程數 #error_log logs/error.log; //錯誤日誌文件的位置 #pid logs/nginx.pid; //PID文件的位置
(2)I/O事件配置
建議使用epoll模型以提升性能,進程的鏈接數根據實際需求來定,通常在10000如下(默認1024)
events { use epoll; //使用epoll模型 worker_connections 1024; //每一個進程處理1024個鏈接,可按需求進行調整 }
(3)HTTP配置
包括訪問日誌、HTTP端口、網頁目錄、默認字符集、鏈接保持等
Nginx的訪問狀態統計
Nginx內置了HTTP_STUB_STATUS狀態統計模塊,用來反饋當前的Web訪問狀況。除了編譯安裝時須要啓動該模塊外,還須要修改nginx.conf配置文件,指定訪問位置並打開stub_status配置
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf ……省略部份內容 server { location /status { //訪問的位置爲/status stub_status on; //打開狀態統計功能 access_log off; //關閉此位置的日誌記錄 } ……省略部份內容 } [root@localhost ~]# service nginx restart
在瀏覽器中訪問Nginx服務器的/status網站位置,能夠看到當前的統計信息
配置虛擬Web主機
在前面的Apache服務中,已經介紹了基於域名、基於IP地址、基於端口號三種虛擬Web主機。而使用Nginx搭建虛擬Web主機服務器時,每一個虛擬Web站點擁有獨立的「server{ }」配置項,網站名稱、IP地址、端口號均可以單獨指定,下面將配置基於域名的虛擬Web主機
(1)搭建DNS服務器
這裏採用另外一種方法,修改hosts文件,只能在本機解析域名
[root@localhost ~]# vim /etc/hosts 127.0.0.1 www.ysf.com 127.0.0.1 www.yangshufan.com
(2)準備網站目錄及測試文件
[root@localhost ~]# mkdir /var/www/ysf [root@localhost ~]# mkdir /var/www/yangshufan [root@localhost ~]# echo www.ysf.com > /var/www/ysf/index.html [root@localhost ~]# echo www.yangshufan.com > /var/www/yangshufan/index.html
(3)調整nginx.conf配置文件
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf http { ……省略部份內容 server { listen 80; server_name www.ysf.com; charset utf-8; #access_log logs/host.access.log main; location / { root /var/www/ysf; index index.html index.htm; } } server { listen 80; server_name www.yangshufan.com; location / { root /var/www/yangshufan; index index.html index.htm; } } } [root@localhost ~]# service nginx reload
(4)訪問虛擬Web主機
在瀏覽器中分別訪問兩個站點,若能看到測試文件,就表示虛擬Web主機的配置成功