Nginx(engine x)是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP服務器。php
功能:html
1.高性能的HTTP Server,解決c10k的問題前端
2.高性能的反向代理服務器,給網站加速nginx
3.作爲LB集羣的前端一個負載均衡器web
nginx的優點 IO多路複用vim
理論:後端
1.最傳統的多進程併發模型 (每進來一個新的I/O流會分配一個新的進程管理。)服務器
2.I/O多路複用 (單個線程,經過記錄跟蹤每一個I/O流(sock)的狀態,來同時管理多個I/O流 。)發明它的緣由,是儘可能多的提升服務器的吞吐能力。在同一個線程裏面, 經過撥開關的方式,來同時傳輸多個I/O流。併發
技術:負載均衡
spoll——特色:異步、非阻塞
$ pstree |grep nginx
|-+= 81666 root nginx: master process nginx
| |--- 82500 nobody nginx: worker process
| \--- 82501 nobody nginx: worker process
1個master進程,2個work進程
每進來一個request,會有一個worker進程去處理。但不是全程的處理,處理到什麼程度呢?處理到可能發生阻塞的地方,好比向上遊(後端)服務器轉發request,並等待請求返回。那麼,這個處理的worker不會這麼一直等着,他會在發送完請求後,註冊一個事件:「若是upstream返回了,告訴我一聲,我再接着幹」。因而他就休息去了。這就是異步。此時,若是再有request 進來,他就能夠很快再按這種
方式處理。這就是非阻塞和IO多路複用。而一旦上游服務器返回了,就會觸發這個事件,worker纔會來接手,這個request纔會接着往下走。這就是異步回調。
nginx 部署 yum
阿里雲的epel源 或者 去官方:http://www.nginx.org
Mainline version: 主線版,即開發版
Stable version: 最新穩定版,生產環境上建議使用的版本
Legacy versions: 遺留的老版本的穩定版
可是你去官方下載的是源碼包,須要你本身進行配置。。。。。。epel源則不須要
或者我祭出個人祖傳終極大殺器網址你面全是rpm包!!!:http://nginx.org/packages/mainline/rhel/7/x86_64/RPMS/
yum - y install 你wget的包
而後安裝nginx
yum -y install nginx.x86_64 nginx-mod-http-geoip.x86_64
nginx-mod-http-geoip.x86_64 這個包是提供若是須要之後顯示用戶IP的的國家、城市的模塊,這個包只是一個能夠顯示用戶IP國家、城市的模塊。缺失這些國家、城市的信息,因此也要安裝相應的庫。下面是國家、城市的庫:
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gzip -d 你下載的這兩個包 //解壓下載的包並刪除壓縮包,能夠跟參數不刪。和tar xf 用着同樣就是能多個刪除壓縮包的動做:
mv GeoIP.dat GeoLiteCity.dat /etc/nginx/
而後進配置表進行添加國家、城市信息: vim /etc/nginx/nginx.conf
nginx -t 測試一下看哪裏有問題。
而後service nginx reload //從新加載數據。不會致使用戶掉線重連。
加下來就能夠運行nginx了
systemctl start nginx
將 vim /etc/nginx/nginx.conf 中server{ } 內容複製一下
粘貼在在 vim /etc/nginx/con.f/aaa.conf 進行修改爲下面這樣
server {
listen 8000;
server_name www.wangdada.com *.sina.com;
location / {
root /data/webroot;
index index.html index.php;
allow 10.18.42.0/24;
allow 127.0.0.1;
deny all;
}
}
nginx -t //模擬運行查看錯誤
listen 8000; //端口號
root /data/webroot; //網頁存儲目錄,data 和 webroot 都是目錄,網頁內容放在/data/webroot/下
index index.html //是 /data/webroot/下的網頁文件。
allow //設置可訪問的ip ,
deny all; //allow的結束語。 拒絕全部,除allow所設置的IP
service nginx reload //從新加載
systemctl start nginx //開啓