nginx:
webserver冬竟,負載均衡欧穴,代理服務器
固態(tài)盤(閃盤):用于系統(tǒng)盤
sas:磁盤陣列(READ1,5,0)
多路復用:
當一個請求的資源過多時,該請求會進入等待狀態(tài)泵殴,該worker進程會繼續(xù)處理下一個請求涮帘,直到該請求的到結(jié)果
多路復用的具體方法:
select:線程不安全,最多只檢測1024個url笑诅,不會給返回參數(shù)作標記不方便查找
poll:線程不安全
epoll:杜絕了select和poll的大部分問題
監(jiān)控nginx的工作狀態(tài)
location /nginx-status {
stub_status on;
access_log /var/log/nginx/nginxstatus.log; #設置日志文件的位置
auth_basic "nginx-status"; #指定認證機制(與location后面的內(nèi)容相同即可)
auth_basic_user_file /etc/nginx/htpasswd;
}
htpasswd -c -m /etc/nginx/htpasswd lys
-c #創(chuàng)建用戶
-m #密碼使用md5加密
nginx-status:
active connections – 活躍的連接數(shù)量
server accepts handled requests — 總共處理了11989個連接 , 成功創(chuàng)建11989次握手, 總共處理了11991個請求
reading — 讀取客戶端的連接數(shù).
writing — 響應數(shù)據(jù)到客戶端的數(shù)量
waiting — 開啟 keep-alive 的情況下,這個值等于 active – (reading+writing), 意思就是 Nginx 已經(jīng)處理完正在等候下一次請求指令的駐留連接.
1)nginx啟動時,會生成兩種類型的進程,一個是主進程(Master),一個(windows版本的目前只
有一個)或多個工作進程(Worker)调缨。主進程并不處理網(wǎng)絡請求,主要負責調(diào)度工作進程,也就是圖
示的三項:加載配置、啟動工作進程及非停升級吆你。所以,nginx啟動以后,查看操作系統(tǒng)的進程列表,
我們就能看到至少有兩個nginx進程弦叶。
2)服務器實際處理網(wǎng)絡請求及響應的是工作進程(worker),在類unix系統(tǒng)上,nginx可以配置多個
worker,而每個worker進程都可以同時處理數(shù)以千計的網(wǎng)絡請求。
3)模塊化設計妇多。nginx的worker,包括核心和功能性模塊,核心模塊負責維持一個運行循環(huán)(run-
loop),執(zhí)行網(wǎng)絡請求處理的不同階段的模塊功能,如網(wǎng)絡讀寫伤哺、存儲讀寫、內(nèi)容傳輸者祖、外出過濾,以
及將請求發(fā)往上游服務器等立莉。而其代碼的模塊化設計,也使得我們可以根據(jù)需要對功能模塊進行適當?shù)倪x擇和修改,編譯成具有特定功能的服務器。
4)事件驅(qū)動七问、異步及非阻塞,可以說是nginx得以獲得高并發(fā)蜓耻、高性能的關鍵因素,同時也得益于對
Linux、Solaris及類BSD等操作系統(tǒng)內(nèi)核中事件通知及I/O性能增強功能的采用,如kqueue械巡、epoll及event ports刹淌。
5)代理(proxy)設計,可以說是nginx深入骨髓的設計,無論是對于HTTP,還是對于FastCGI、
memcache讥耗、Redis等的網(wǎng)絡請求或響應,本質(zhì)上都采用了代理機制有勾。所以,nginx天生就是高性能的代理服務器
nginx -s stop 快速停止nginx
nginx -t 檢查當前配置文件是否有錯誤
log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer"''"$http_user_agent" "$http_x_forwarded_for"';
location配置:
使用 root ,實際的路徑就是:root值 + location值。
使用 alias ,實際的路徑就是:alias值葛账。
虛擬主機
使得一臺nginx服務器提供多項服務
1.基于域名的虛擬主機
2.基于ip的虛擬主機
3.基于端口的虛擬主機
1.基于域名的虛擬主機
在conf.d中建立文件yuming.conf
server {
listen 80;
server_name www.1000phone01.com;
root /usr/share/nginx/yuming;
access_log /var/logs/www.1000phone01.com.log main;
error_log
/var/logs/www.1000phone01.com.error.log;
location / {
index index.html index.htm;
}
}
在/etc/hosts/中建立主機名映射
在/usr/share/nginx/建立yuming目錄
echo "yuming1" > yuming/index.html
systemctl reload nginx
2.基于ip的虛擬主機
一個網(wǎng)卡綁定多個ip
ifconfig eth0:1 192.168.1.101
(取向ip綁定 ifconfig eth0:1 192.168.1.101 down)
在conf.d中建立文件iptest.conf
server {
listen 192.168.1.101:80;
root /usr/share/nginx/iptest;
access_log /var/logs/www.1000phone01.com.log main;
error_log
/var/logs/www.1000phone01.com.error.log;
location / {
index index.html index.htm;
}
}
在/usr/share/nginx/建立iptest目錄
echo "iptest" > iptest/index.html
systemctl reload nginx
3.基于端口的虛擬主機
在conf.d中建立文件port.conf
server {
listen 8000;
server_name www.port1.com;
root /usr/share/nginx/port1;
access_log /var/log/www.port1.com.log main;
error_log /var/log/www.port1.com.error.log;
location / {
index index.html;
}
}
在/usr/share/nginx/建立port目錄
echo "porttest" > port/index.html
systemctl reload nginx
代理
正向代理
反向代理
正向代理:nginx服務器代替主機發(fā)送請求柠衅,以訪問其他的服務器,
反向代理:nginx服務器代替webserver接受請求籍琳,用戶只能訪問到nginx的ip地址
keepalives:
守護進程菲宴,定時廣播
vip(虛擬ip)
master,backup
master:主服務器趋急,定時廣播喝峦,沒有發(fā)生故障
backup:接受廣播,若沒發(fā)生故障呜达,就靜默谣蠢,若發(fā)生故障,就是使用vip,這樣會保證負載均衡的實現(xiàn)
- HTTP Server和Application Server的區(qū)別和聯(lián)系
Apache/nignx是靜態(tài)服務器(HTTP Server):
Nginx優(yōu)點:負載均衡眉踱、反向代理挤忙、處理靜態(tài)文件優(yōu)勢。nginx處理靜態(tài)請求的速度高于apache;
Apache優(yōu)點:相對于Tomcat服務器來說處理靜態(tài)文件是它的優(yōu)勢,速度快谈喳。Apache是靜態(tài)解
析,適合靜態(tài)HTML册烈、圖片等。
HTTP Server 關心的是 HTTP 協(xié)議層面的傳輸和訪問控制,所以在 Apache/Nginx 上你可以看到代
理婿禽、負載均衡等功能
HTTP Server(Nginx/Apache)常用做靜態(tài)內(nèi)容服務和代理服務器,將外來請求轉(zhuǎn)發(fā)給后面的應
用服務(tomcat,jboss,jetty等)赏僧。應用服務器(tomcat/jboss/jetty)是動態(tài)服務器(Application Server):
應用服務器Application Server,則是一個應用執(zhí)行的容器。它首先需要支持開發(fā)語言的
Runtime(對于 Tomcat 來說,就是 Java,若是Ruby/Python 等其他語言開發(fā)的應用也無法直接
運行在 Tomcat 上)扭倾。 - 但是事無絕對,為了方便,應用服務器(如tomcat)往往也會集成 HTTP Server 的功能,nginx也可
以通過模塊開發(fā)來提供應用功能,只是不如專業(yè)的 HTTP Server 那么強大,所以應用服務器往往
是運行在 HTTP Server 的背后,執(zhí)行應用,將動態(tài)的內(nèi)容轉(zhuǎn)化為靜態(tài)的內(nèi)容之后,通過 HTTP
Server 分發(fā)到客戶端淀零。 - 常用開源集群軟件有:lvs,keepalived,haproxy,nginx,apache,heartbeat
常用商業(yè)集群硬件有:F5, Netscaler,Radware,A10等