1. 程式人生 > 其它 >1 Nginx介紹及部署

1 Nginx介紹及部署

技術標籤:nginxnginx

1. 介紹

Nginx(Engine x),俄羅斯人開發阿德,開源的WWW服務軟體。一共才780K,而apache大概7M左右。

       Nginx本身是一款靜態(html,css,js,jpg等)www軟體 靜態小檔案高併發量,同時佔用的資源很少,3W併發量 10個執行緒150w。

       Nginx使用平臺:unix linux,windows都可以。

使用排名 http://w3techs.com/technologies/overview/web_server/all
使用趨勢 http://news.netcraft.com/
國內網站使用nginx更多一些

1.1 Nginx功能

www web 服務 http協議 埠80
負載均衡(反向代理proxy)
Web cache(web快取)

1.2 Nginx優點

高併發(靜態小檔案),靜態1-2W
佔用資源少,2W併發 開10個執行緒服務,記憶體消耗幾百M。
功能種類比較多(web,cache,proxy),但是每一個功能都不是很強。
支援epoll模型。使得nginx可以支援高併發。
ginx配合動態服務和apache有區別。
利用nginx可以對ip限速,可以限制連線數(有這樣的模組,apache也有隻是第三方的)。
配置更簡單,更靈活。

1.3 使用場景

靜態伺服器(圖片,視訊服務)html,js,css,flv等,國內使用的靜態伺服器就兩個,一個是nginx一個是lightttpd。
靜態的訪問高。併發1-3W。
動態服務。Nginx+fastcgi的方式執行php,jsp。併發500-1500. 相對於apache+php,lighttp+fcgi php
反向代理,負載均衡。日PV2000W以下,都可以直接使用nginx代理.haproxy,F5,a10
快取服務.Squid,varnish

1.4 對比

1.4.1 Apache

2.2版本非常強大穩定,據官方說2.4本版本效能超強
Preforx模式取消了程序建立開銷,效能很高
處理動態業務資料時,因關聯到後端的引擎和資料庫,瓶頸不在Apache本身
高併發時候消耗的系統資源相對多一些
基於傳統的select的模型
擴充套件庫,DSO方法,apxs。
功能多更穩定,更安全,外掛也多

1.4.2 nginx

基於非同步IO模型(epoll.kqueue),效能強,支援上萬併發量
對小檔案支援很好,效能很高(限小檔案)
程式碼優美,擴充套件庫必須編譯主程序程式
消耗系統資源相對比較低

1.4.3 Lighttpd

基於非同步IO模型,效能和nginx相近
擴充套件庫是SO模式,比nginx更靈活
全球使用率比較低,安全效能沒有上面兩個好
通過外掛(mod_secdowload)可實現檔案URL地址加密。

1.5 web服務建議

靜態業務:高併發,採用nginx後者lighttpd根據自己的掌握程度或公司要求
動態業務:採用nignx或者apache
既有靜態業務也有動態業務:nginx或者apache,不要多選,要單選。
動態業務可以由前端的代理(haproxy),根據頁面元素型別,向後轉發相應的伺服器進行處理 若是併發不是很大,又對apache很熟,採用apache也是可以的,apache2.4版本也很強大,併發連線數也有所增加,
提示:nginx做web(apache,lighttpd),反向代理(haproxy,lvs nat)以及快取服務(squid)

1.6 nginx虛擬主機

基於域名,通過域名來區分虛擬主機。 ==>應用:外部網站
基於埠,通過埠來區分虛擬主機。 ==>應用:公司內部網站。
基於IP(不完善),基本不用。

2. nginx部署

2.1 安裝pcre

PCRE 作用是讓 Nginx 支援 Rewrite 功能。

首先要檢查機器是否已經安裝pcre


[email protected]:~# pcre-config  --version
8.38
若是沒有安裝就安裝一下步驟安裝,缺少什麼依賴就安裝依賴。

cd /usr/local/src/
wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
tar zxvf pcre-8.35.tar.gz
cd pcre-8.35
./configure && make && make install
pcre-config --version
yum -y install pcre-devel openssl openssl-devel

2.2 下載安裝nginx

以下我以centos7基礎環境。

2.2.1 線上安裝

centos 
yum install nginx

ubuntu
apt-get install nginx
由於線上安裝nginx,可能不是最新的[依賴於系統的nginx映象遠版本]。

2.2.2 離線安裝

useradd nginx -s /sbin/nologin -M
wget http://nginx.org/download/nginx-1.14.2.tar.gz
unzip nginx-1.14.2.zip
cd nginx-1.14.2
./configure \
--user=nginx \
--group=nginx \
--prefix=/app/nginx-1.14.2 \
--with-http_stub_status_module \
--with-http_ssl_module
make && make install
ln -s /app/nginx1.6.2/  /app/nginx 

操作過程

[[email protected] ~]# cd /usr/local/src/
[[email protected] src]# wget http://nginx.org/download/nginx-1.14.2.tar.gz
[[email protected] src]# useradd nginx -s /sbin/nologin -M
[[email protected] src]# ls
nginx-1.14.2.zip
[[email protected] src]# tar xf nginx-1.14.2.tar.gz
[[email protected] src]# cd nginx-1.14.2
[[email protected] nginx-1.14.2]# ./configure \
--user=nginx \
--group=nginx \
--prefix=/app/nginx-1.14.2 \
--with-http_stub_status_module \
--with-http_ssl_module
[[email protected] nginx-1.14.2]# ln -sf /app/nginx-1.14.2/ /app/nginx
[[email protected] nginx-1.14.2]# ls /app/
nginx  nginx-1.14.2

2.2.3 啟動並檢查

[[email protected] nginx-1.14.2]# /app/nginx/sbin/nginx -t
nginx: the configuration file /app/nginx-1.14.2/conf/nginx.conf syntax is ok
nginx: configuration file /app/nginx-1.14.2/conf/nginx.conf test is successful
[[email protected] nginx-1.14.2]# /app/nginx/sbin/nginx
[[email protected] nginx-1.14.2]# ps axf|grep -v grep |grep nginx
 25298 ?        Ss     0:00 nginx: master process /app/nginx/sbin/nginx
 25299 ?        S      0:00  \_ nginx: worker process
[[email protected] nginx-1.14.2]# netstat -lnp|grep -w 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      25298/nginx: master

[[email protected] nginx-1.14.2]# curl 127.0.0.1 -I
HTTP/1.1 200 OK
Server: nginx/1.14.2
Date: Wed, 13 Mar 2019 05:30:09 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Wed, 13 Mar 2019 05:27:38 GMT
Connection: keep-alive
ETag: "5c8894ca-264"
Accept-Ranges: bytes

注意事項

檢查nginx配置檔案: /app/nginx/sbin/nginx -t
啟動nginx:         /app/nginx/sbin/nginx
重新載入配置檔案:  /app/nginx/sbin/nginx -s reload

nginx不通的排錯
1、ping ip  物理通不通
2、telnet ip 瀏覽器到web伺服器通不通
3、伺服器本地 curl  127.0.0.1 web服務開沒開