nginx學習總結(一)
一、什麼是ngnix?
Ninix是一款高效能的http伺服器、反向代理伺服器、電子郵件代理伺服器。官方測試ngnix能夠支撐5萬的併發連線,並且cpu、記憶體等資源消耗非常低,執行非常的穩定。
二、應用場景有哪些?
1.http伺服器。ninix是一個http伺服器可以獨立提供http服務。可以做靜態網頁伺服器。
2.虛擬主機。可以實現在一臺伺服器虛擬出多個網站。例如個人網站使用的虛擬主機
3.反向代理、負載均衡
三、ngnix的安裝準備?
(一)安裝環境
1.下載地址:http://ngnix.org
2.要求的安裝環境
(1)需要安裝gcc的環境 yum install-c++
(2)第三方的開發包
- PCRE
PCRE(Perl Compatible Regular Expressions)是一個per庫,包括perl相容的正則表示式。ngnix的http模組使用pcre來解析正則表示式。所有需要在linux上安裝pcre庫。
yum install -y pcre pcre-devel
- zlib
zlib庫提供了很多種壓縮和解壓縮的方式。ngnix使用zlib對http包的內容進行gzip,所以需要在linux上安裝zlib庫。
yum install -y zlib zlib-devel
- openssl
OpenSSL是一個強大的安全套接字層密碼庫,囊括主要的密碼演算法,常用的祕鑰和證書封裝管理功能以及SSL協議,並提供豐富的應用程式供測試或其他目的使用
ngnix不僅支援http協議,還支援https(即在ssl協議上傳輸http),所以需要在linux安裝openssl庫
四、ngnix的安裝步驟
第一步:把ngnix的原始碼包上傳到linux系統
第二步:解壓縮 tar zxf ngnix-1.8.0.tar.gz
第三步:使用configure命令建立一個makeFile檔案
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
注意:啟動ngnix之前,上邊將臨時檔案目錄指定為/var/temp/ngnix,需要在/var下建立temp及ngnix目錄
mkdir /var/temp/ngnix/client -p
第四步:make
第五步:make install
五、ngnix的使用
- 啟動ngnix
進入sbin目錄 ./ngnix
- 關閉ngnix
./ngnix -s stop
推薦使用 ./ngnix -s quit
- 重啟ngnix
- .先關閉後啟動
- .重新整理配置檔案 ./ngnix is reload
- 訪問ngnix
預設80埠
注意:是否關閉防火牆
六、配置虛擬主機
就是在一臺伺服器上啟動多個網站
如何區分不同的網站
1.域名不同
2.埠號不同
(一)通過埠號區分不同的虛擬主機
Ngnix的配置檔案 /usr/local/ninix/conf/ngnix.conf
可以配置多個server,配置了多個虛擬主機。
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
}
server {
listen 81;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html-81;
index index.html index.htm;
}
}
重新載入配置檔案 sbin/nginx -s reload
(二)通過域名區分虛擬主機
1.域名就是就是網站
2.DNS伺服器:把域名解析為ip地址。儲存的就是域名和IP的對映關係3
3.一個域名對應一個ip地址,一個ip地址可以被多個域名繫結。
七、ngnix實現反向代理
反向代理伺服器決定哪臺伺服器提供服務
兩個域名指向同一臺nginx伺服器,使用者訪問不同的域名顯示不同的網頁內容。
兩個域名是www.sian.com.cn和www.sohu.com
nginx伺服器使用虛擬機器192.168.101.3
第一步:安裝兩個tomcat,分別執行在8080和8081埠。
第二步:啟動兩個tomcat。
第三步:反向代理伺服器的配置
upstream tomcat1 {
server 192.168.25.148:8080;
}
server {
listen 80;
server_name www.sina.com.cn;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://tomcat1;
index index.html index.htm;
}
}
upstream tomcat2 {
server 192.168.25.148:8081;
}
server {
listen 80;
server_name www.sohu.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://tomcat2;
index index.html index.htm;
}
}
|
第四步:nginx重新載入配置檔案
第五步:配置域名
在hosts檔案中新增域名和ip的對映關係
192.168.25.148 www.sina.com.cn
192.168.25.148 www.sohu.com
八、負載均衡
如果一個服務由多條伺服器提供,需要把負載分配到不同的伺服器處理,需要負載均衡。
可以根據伺服器的實際情況調整伺服器權重。權重越高分配的請求越多,權重越低,請求越少。預設是都
是1
upstream tomcat2 {
server 192.168.25.148:8081;
server 192.168.25.148:8082 weight=2;
}
九、Ngnix實現高可用
- 什麼是負載均衡高可用
nginx作為負載均衡器,所有請求都到了nginx,可見nginx處於非常重點的位置,如果nginx伺服器宕機後端web服務將無法提供服務,影響嚴重。
為了遮蔽負載均衡伺服器的宕機,需要建立一個備份機。主伺服器和備份機上都執行高可用(High Availability)監控程式,通過傳送諸如“I am alive”這樣的資訊來監控對方的執行狀況。當備份機不能在一定的時間內收到這樣的資訊時,它就接管主伺服器的服務IP並繼續提供負載均衡服務;當備份管理器又從主管理器收到“I am alive”這樣的資訊時,它就釋放服務IP地址,這樣的主伺服器就開始再次提供負載均衡服務
- 什麼是keepalived
keepalived是叢集管理中保證叢集高可用的一個服務軟體,用來防止單點故障。
Keepalived的作用是檢測web伺服器的狀態,如果有一臺web伺服器宕機,或工作出現故障,Keepalived將檢測到,並將有故障的web伺服器從系統中剔除,當web伺服器工作正常後Keepalived自動將web伺服器加入到伺服器群中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修復故障的web伺服器。
- keepalived工作原理
keepalived是以VRRP協議為實現基礎的,VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗餘協議。
虛擬路由冗餘協議,可以認為是實現路由器高可用的協議,即將N臺提供相同功能的路由器組成一個路由器組,這個組裡面有一個master和多個backup,master上面有一個對外提供服務的vip(VIP = Virtual IP Address,虛擬IP地址,該路由器所在區域網內其他機器的預設路由為該vip),master會發組播,當backup收不到VRRP包時就認為master宕掉了,這時就需要根據VRRP的優先順序來選舉一個backup當master。這樣的話就可以保證路由器的高可用了。
keepalived主要有三個模組,分別是core、check和VRRP。core模組為keepalived的核心,負責主程序的啟動、維護以及全域性配置檔案的載入和解析。check負責健康檢查,包括常見的各種檢查方式。VRRP模組是來實現VRRP協議的。