Nginx做爲web服務器的安裝配置html
(關注官方網站http://nginx.org/)nginx
Nginx簡介web
是一個高性能的 HTTP 和 反向代理服務器,由俄羅斯的程序設計師Igor Sysoev所開發,供俄國大型的入口網站及搜索引擎Rambler使用。其特性是:1.模塊化設計,較好的擴展性(不支持動態裝卸載機制) ;2.較好的高可靠性3.低內存消耗(一個線程響應多個請求) 4.支持熱部署(不停機二更新配置文件、日誌文件的滾動、也包括升級程序版本) 5.支持時間驅動機制、異步IO(AIO)、內存映射機制(mmap)。vim
Nginx具備獨特的工做模式,它基於非阻塞、事件驅動機制由一個master進程生成多個worker線程,每一個worker響應n個請求,基於這種模式,nginx的併發能力在國內外享有很高的評價,特別是響應靜態資源的能力尤爲突出,是一款強大的HTTP和反向代理服務器。瀏覽器
實驗準備:bash
yum源:epel源服務器
源碼包:nginx-1.6.2.tar.gz 併發
本機IP:192.168.3.136異步
實驗步驟:ide
1、nginx的編譯安裝
安裝開發環境和pcre-devel包,以及添加nginx組和nginx用戶
#yum groupinstall "Development Tools""Server Platform Development" –y # yum install pcre-devel –y # groupadd -r nginx # useradd -r -g nginx nginx
1. 解壓nginx安裝包至本地目錄,而後執行編譯、安裝
# tar -xf nginx-1.6.2.tar.gz #cd nginx-1.6.2 #./configure --prefix=/usr/local/nginx--conf-path=/etc/nginx/nginx.conf --user=nginx --group=nginx--error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log--pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock--with-http_ssl_module --with-http_stub_status_module--with-http_gzip_static_module --with-http_flv_module --with-http_mp4_module--http-client-body-temp-path=/var/tmp/nginx/client--http-proxy-temp-path=/var/tmp/nginx/proxy--http-fastcgi-temp-path=/var/tmp/nginx/fastcgi--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi #make && make install #mkdir -pv/var/tmp/nginx/{client,proxy,fastcgi,uwsgi}
2. 啓動nginx,並確保80端口已經監聽
# ss -tnl | grep 80 保證80端口此時沒被監聽 # /usr/local/nginx/sbin/nginx #ss -tnl | grep 80 LISTEN 0 128 *:80 *:*
到此nginx的編譯安裝就已經成功完成了,在瀏覽器中輸入:192.168.3.136,進行測試訪問,就出現nginx的的歡迎頁面。
2、基於端口的虛擬主機的配置
1. 在上面的基礎上,編輯配置文件,添加虛擬主機sever{}
#vim /etc/nginx/nginx.conf ……在最http{}裏面添加以下內容…. server{ #定義一個虛擬主機 listen 8080; #指明監聽的端口爲8080 server_name www.vega.ict; #指明服務器的名字 root "/vhosts/web1/"; #指明主頁面文檔的根目錄 }
2. 建立虛擬主機頁面目錄,並準備主頁面文件
# mkdir /vhosts/web1 –pv # cd /vhosts/web1/ # vim index.html …..添加以下內容….. <h1>page web1(nginx)</h1>
3.從新載入配置文件
# /usr/local/nginx/sbin/nginx -s reload
到此咱們基於端口的虛擬主機就配置完成了,下面在瀏覽器進行訪問測試,輸入192.168.3.136:8080,觀察顯示結果
3、基於用戶請求作訪問控制的配置
1. 編輯配置文件/etc/nginx/nginx.conf
#vim /etc/nginx/nginx.conf ….將上面server{}段的內容改成以下….. server { listen 8080; #監聽8080端口 server_name www.vega.ict; #定義主機名 #凡是用戶的URL帶/的就定向至本地文件系統路徑:/vhosts/web1/中 location / { root "/vhosts/web1/"; } #凡是用戶的URL以.txt結尾的就定向至本地文件系統路徑:/vhosts/text/中 location ~* \.txt$ { root "/vhosts/text/"; } }
2. 提供測試頁面目錄及頁面主目錄文件
#mkdir /vhosts/text #vim/vhosts/web1/a.txt ….添加以下內容,…. It is /vhosts/web1/a.txt #vim/vhosts/text/a.txt ….添加以下內容,…. It is /vhosts/text/a.txt
3. 從新載入配置文件,並進行相應測試
#/usr/local/nginx/sbin/nginx -s reload
在瀏覽器中測試訪問,分別輸入:http://192.168.3.136:8080/a.txt,之因此是訪問的/vhosts/text/a.txt是由於~*location的優先級高於不帶任何符號的location,因此就被定向至/vhosts/text/a.txt而非/vhosts/web1/a.txt.
4、基於IP的訪問控制的配置(以狀態頁面爲例)
1.編輯配置文件,添加location /status {}段:
#vim /etc/nginx/nginx.conf …..在上述定義server{}段中添加以下內容…. location /status { #定義狀態頁的URL爲/status stub_status on; #開啓狀態頁 allow 192.168.3.0/24; #容許192.168.3.0網段的主機訪問 deny all; #其餘網段的主機禁止訪問
}
2.測試語法是否有誤,然從新載入配置文件,最後執行訪問測試便可
# /usr/local/nginx/sbin/nginx -t # /usr/local/nginx/sbin/nginx -s reload
基於IP的控制就配置完成了,下面對其進行測試訪問,在瀏覽器中輸入:http://192.168.3.136:8080/status,觀察訪問結果!!
5、基於用戶的訪問控制的配置
1.編輯配置文件/etc/nginx/nginx.conf
#vim /etc/nginx/nginx.conf ………在location{}段中,添加藍色2行便可…… location /status { stub_status on; allow 192.168.3.0/24; deny all; auth_basic "Only for VIP"; auth_basic_user_file/etc/nginx/users/.htpasswd; }
2.在/etc/nginx目錄建立認證用戶目錄users,並用命令htpasswd爲用戶tom建立認證文件.htpasswd(最好用隱藏文件,如.htpasswd)
# mkdir /etc/nginx/users # yum install httpd –y #htpasswd -c -m /etc/nginx/users/.htpasswd tom ….輸入密碼123便可
3.確保沒有語法錯誤,並從新載入配置文件
#/usr/local/nginx/sbin/nginx -t #/usr/local/nginx/sbin/nginx -s reload
到此咱們基於用戶的訪問控制配置就完成了,下面對已經完成的配置進行訪問測試,在瀏覽器中輸入:http://192.168.3.136:8080/status,而後輸入用戶名tom和密碼:123,認證經過便可訪問nginx web服務器的狀態頁面了