Nginx是一款輕量級的Web服務器/反向代理服務器,相比於傳統的Web服務器Apache,Nginx佔用的內存和資源更少,配置更簡單,同時由於Nginx是異步非阻塞型的(多個鏈接(萬級別)能夠對應一個進程),在高併發下,它能保持低資源低消耗高性能,能支持高達50,000個併發鏈接數的響應。html
Nginx的一個強大特性是它提供負載均衡策略,Nginx的負載策略能夠分爲內置策略和擴展策略,內置策略就是默認編譯到Nginx內核中如:加權輪詢和ip hash ;擴展策略就是須要在編譯內核時添加的策略如:fair,通用hash,consistent hash等。linux
Nginx做爲負載均衡使用,由於是直接工做在網絡的7層——應用層上,因此它的正則規則更爲的強大和靈活,同時它對網絡穩定性依賴性不像Lvs那麼高,理論上只要能ping的通就可以進行負載功能。並且Nginx的安裝和配置也比較簡單,它基本上能把錯誤以日誌的形式顯示出來,這一點不像Lvs那樣配置和檢測都比較麻煩。nginx
Nginx能夠經過端口檢測到服務器內部的故障,好比根據服務器處理網頁返回的狀態碼、超時等等,而且會把返回錯誤的請求從新提交到另外一個節點,不過其中缺點就是不支持url來檢測。好比用戶正在上傳一個文件,而處理該上傳的節點恰好在上傳過程當中出現故障,Nginx會把上傳切到另外一臺服務器從新處理。web
此外Nginx做爲Web的反向代理緩存也愈來愈成熟了,速度比傳統的Squid服務器更加快速,同時Nginx也可做爲靜態網頁和圖片服務器,這方面的性能也無對手。還有Nginx社區很是活躍,第三方模塊也不少。vim
下面是Nginx的一些簡單配置。
後端
解壓nginx源碼包緩存
tar zxf nginx-1.9.14.tar.gz cd nginx-1.9.14
解決依賴性:bash
yum install pcre-devel openssl-devel -y
編譯:指定源碼包和加入ssl加密模塊和監控模塊服務器
./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module make && make install
添加nginx用戶網絡
useradd -s /sbin/nologin nginx usermod -d /usr/local/lnmp/nginx/ nginx
修改.bash_profile 文件改變nginx的PATH變量的值
vim ~/.bash_profile PATH=$PATH:$HOME/bin:/usr/local/lnmp/nginx/sbin source ~/.bash_profile
更改nginx配置文件
vim /usr/local/lnmp/nginx/conf/nginx.conf user nginx; worker_processes 4; #要開啓的工做進程數, events { use epoll; #設定事件處理機制 worker_connections 4096; #設定併發數,數值越大則併發數越高 } nginx -t #監測配置文件正確與否
配置正常就能夠輸入nginx命令來開啓nginx了
開啓nginx以後就能夠用web訪問了它的端口和Apache同樣也是80
添加ssl加密證書:
vim /usr/local/lnmp/nginx/conf/nginx.conf server { listen 443 ssl; server_name server2.example.com; ssl_certificate cert.pem; ssl_certificate_key cert.pem; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { root html; index index.html index.htm; } }
生成本身的證書:
cd /etc/pki/tls/certs make cert.pem cp cert.pem /usr/local/lnmp/nginx/conf/ nginx -t nginx -s reload
製做證書的過程:
能夠登陸網站測試一下了:
添加虛擬主機:
vim /usr/local/lnmp/nginx/conf/nginx.conf
在http{}之間添加
server { listen 80; server_name www.westos.com; #虛擬主機的域名訪問時要有解析 location / { root /westos; #虛擬主機的Web目錄 index index.html; } } server { listen 80; server_name www.linux.com; location / { root /linux; index index.html; } }
nginx -t
nginx -s reload
能夠經過訪問虛擬主機的域名來瀏覽虛擬主機的網頁了:
nginx的負載均衡:
vim /usr/local/lnmp/nginx/conf/nginx.conf
在http{}之間添加
server { listen 80; server_name www.example.com; location / { proxy_pass http://example; #設置轉發路徑當訪問www.example.com時將訪問到後端另外兩臺服務器 } } upstream example { #實現負載均衡默認爲輪詢 server 172.25.9.3:80; server 172.25.9.4:80; }
經過訪問www.example.com能夠訪問到後端兩臺web服務器的網頁了: