Nginx的基礎
特性
配置部署
優化(瞭解)javascript
Nginx是一個開源的,支持高性能,高併發的www服務和代理服務軟件---web服務軟件。
它是由俄羅斯人Igor Sysoev 開發的,
優勢:php
性能:佔用的系統資源更少,3萬併發開啓10個線程小號內存200MB 支持更多的併發鏈接,幾萬併發小事情 達到更高的訪問效率 支持異步網絡I/O事件模型epoll(linux 2.6+)
功能:優秀的web服務軟件,支持反向代理負載均衡及緩存服務 代理軟件有:lvs, Haproxy等軟件,爲何選擇呢? nginx部署更簡單,方便啊 緩存:他又相似緩存服務軟件(不多用) 利用自身的proxy_cache 模塊實現類Squid等專業緩存功能
安裝配置:更方便,簡單,靈活 支持的操做系統: UNIX,BSD,Mac OS X, Solaris,linux, Microsoft等操做系統 經常使用的組合環境:LNMP 或LEMP(E 取自nginx的engine x)
2015年web服務軟件排名:
1.apache 32.40%
2.Nginx 14.29%
3.microsoft [laɪt] [spiːd] 31.65% iis
4.google servers 2.07%
5.tomcat 0.4%html
a)可針對靜態資源高速高併發訪問及緩存 b)可以使用反向代理加速,而且可進行數據緩存。 c)據有簡單負載均衡、節點監控檢測和容錯功能 d)支持FastCGI服務的緩存加速 CGI全稱是「公共網關接口」(Common Gateway Interface), HTTP服務器與你的或其它機器上的程序進行「交談」的一種工具, 其程序通常運行在網絡服務器上。 CGI能夠用任何一種語言編寫,只要這種語言具備標準輸入、輸出和環境變量。 如php,perl,tcl等。 相對於CGI來講FastCGI有兩點是和其不一樣的。 第一點是FastCGI的進程是永久性的,也就是說用於處理請求的進程隨着請求的結束並不會退出,而是繼續運行等待有新的請求來處理。 這樣就解決了CGI因爲頻繁的建立和關閉進程所帶來的性能問題; 第二點是FastCGI和web服務器之間的通訊方式是和CGI不一樣的。 而且通訊時全雙工的模式 f)支持FastCGI, Uwsgi, SCGI, Memcached servers的加速和緩存 g)具備模塊化的架構
4.nginx所具備其餘的www服務特性:java
a)支持基於名字,端口及ip的多虛擬主機站點:基於端口, ip, 域名 c)可進行簡單,方便,靈活的配置和管理 d)支持修改nginx配置,而且在代碼上線時,可平滑重啓 平滑重啓: nginx 運行新的工做進程並從容關閉舊的工做進程,通知工做進程關閉監聽套接字, 可是繼續爲當前鏈接的客戶提供服務 全部的客戶端的服務完成後,舊的工做進程被關閉 e)可自定義訪問日誌格式,臨時緩衝寫日誌操做,快速日誌輪詢及經過rsyslog處理日誌 f)可利用信號控制Nginx進程 kill -l g)支持rewrite模塊,支持URI重寫及正則表達式匹配 h)支持FLV流和MP4流技術產品應用 I)支持HTTP響應速率限制 J)支持同一ip地址的併發鏈接或請求數限制 K)支持郵件服務代理
1.準備工做:linux
1.查看當前系統版本:cat /etc/redhat-release --centos6.7 yum -y install lrzsz yum -y install open gcc uname -a
2.安裝Nginx所需的pcre庫及一些包 --用途(爲了使Nginx具備URI重寫功能rewrite) nginx
一般採用yum的方式: 配置yum源(採用網絡源) yum -y install openssl openssl-devel gcc gcc-c++ yum -y install pcre pcre-devel 查看版本:rpm -qa pcre
3.選擇版本:c++
穩定版,開發版,歷史穩定版 首先穩定版(最新版晚6-10個月爲佳)
4.爲神馬安裝openssl-devel,由於HTTPS服務須要這個模塊
什麼是HTTPS呢?web
a)http叫超文本傳輸協議,使用TCP端口80,默認狀況下數據是明文傳送的,
數據能夠經過抓包工具捕獲到,所以在internet上,
有些比較重要的站點的http服務器須要使用PKI(公鑰基礎結構)技術來對數據加密!
這也就是https了;
b)https叫安全的超文本傳輸協議,使用TCP端口443,
他的數據會用PKI中的公鑰進行加密,
這樣抓包工具捕獲到的數據包也沒有辦法看包中的內容,安全性大大提升,
要解密數據的話就要用到PKI中的私鑰。
因此一些安全性比較高的網站如:網上銀行,電子商務網站都須要用https訪問!
5.mkdir /app正則表達式
cd /app --用於存在各類軟件 wget -q http://nginx.org/download/nginx-1.6.3.tar.gz --下載軟件包 ls --查看當前目錄下的文件,查看nginx是否下載完成 useradd nginx -s /sbin/nologin -M 建立nginx用戶並禁止此用戶登陸系統 -M 不創建使用者目錄 -s使用者登入後使用的shell名稱,實際這裏是不容許登錄系統 tail -1 /etc/passwd 查看用戶是否存在 tar xf nginx-1.6.3.tar.gz -解壓 cd nginx-1.6.3 --進入解壓目錄 ./configure 配置 --user=nginx 進程用戶權限 --group=nginx 進程用戶組權限 --prefix=/usr/local/nginx1.4.5 設置安裝路徑 --with-http_stub_status_module 激活狀態信息 --with-http_ssl_module 激活ssl功能 make 編譯 make install 安裝
6.此時不算安裝完,須要啓動前檢查配置文件語法shell
/usr/local/nginx1.6.3/sbin/nginx -t 在啓動服務錢檢測語法很是重要,能夠防止因配置錯誤致使網站重啓或者從新加載配置 等對用戶的影響
7.啓動Nginx服務
/usr/local/nginx1.6.3/sbin/nginx
8.查看服務是否啓動成功,方法:查看端口
lsof -i :80 netstat -lnt | grep 80
9.訪問127.0.0.1 | curl 127.0.0.1
10.總結:安裝容易出現的錯誤:
1.nginx: [emerg] getpwnam("nginx") failed 2.訪問不了頁面: 1.關閉selinux setenforce 0 --臨時關閉selinux的方法getenforce(查看) 2.關閉防火牆 /etc/init.d/iptables stop --暫時關閉防火牆 3.查看日誌:cat /usr/local/nginx1.6.3/logs/error.log 4.ping ip 和查看端口
11. server {
listen 80;
server_name localhost;
location / {
root html; ----------/home/www ---更改網站根目錄
index index.html index.htm;
}
12.重啓服務
方法1:殺進程重啓
a) 殺進程 lsof -i :80 kill -9 pid 重啓 /usr/local/nginx1.6.3/sbin/nginx b) ps -ef | grep nginx |awk '{print $2}'| xargs kill -9 /usr/local/nginx1.6.3/sbin/nginx
方法2:配置文件重啓
a) 檢查語法 /usr /local/nginx/sbin/nginx -t /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -c制定配置文件的路徑,不加-c nginx會自動加載默認路徑的配置文件。 b) /usr/local/nginx/sbin/nginx -t 檢查語法 /usr/local/nginx/sbin/nginx -h --查看幫助 #-s signal : send signal to a master process: stop, quit, reopen, reload /usr/local/nginx/sbin/nginx -s reload (reload若是語法錯誤不會成功,有時候不輸出錯誤) c) 把nginx的啓動文件放在/etc/init.d裏面 server nginx restart chkconfig --add nginx ---意義是開機自啓動