一滥朱、安裝Nginx
1煌张、準(zhǔn)備工作
(1)打開虛擬機(jī)呐赡,使用遠(yuǎn)程連接工具連接 linux 操作系統(tǒng)
(2)到 nginx 官網(wǎng)下載軟件
2、開始進(jìn)行 nginx 安裝
(1)安裝 pcre 依賴
第一步 聯(lián)網(wǎng)下載 pcre 壓縮文件依賴
wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz
第二步 解壓壓縮文件
使用命令 tar –xvf pcre-8.37.tar.gz
第三步./configure 完成后骏融,回到 pcre 目錄下執(zhí)行 make链嘀,最后執(zhí)行 make install
查看pcre依賴是否安裝成功:pcre-config --version
(2)安裝 openssl 、zlib 档玻、 gcc 依賴
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
(3)安裝 nginx
使用命令解壓
./configure
make && make install
進(jìn)入目錄 /usr/local/nginx/sbin/nginx 啟動(dòng)服務(wù)
安裝后怀泊,不能訪問的,需要對(duì)防火墻進(jìn)行設(shè)置
也可以直接關(guān)閉防火墻误趴,并防止自啟(在練習(xí)模式中)
① 查看開放的端口
firewall-cmd --list-all
② 設(shè)置開放的端口號(hào)
firewall-cmd --add-service=http –permanent
firewall-cmd --add-port=80/tcp --permanent
③ 設(shè)置之后需要重啟防火墻
firewall-cmd --reload
④ 訪問成功
二霹琼、Nginx常用命令
進(jìn)入 nginx 目錄中: cd /usr/local/nginx/sbin
1、查看 nginx 版本號(hào)
./nginx -v
2、啟動(dòng) nginx
./nginx
查看是否啟動(dòng)成功:ps -ef|grep nginx
3枣申、停止 nginx
./nginx -s stop
4售葡、重新加載 nginx
./nginx -s reload
三、nginx.conf配置文件
1忠藤、位置
vim /usr/local/nginx/conf/nginx.conf
2挟伙、配置文件中的內(nèi)容(包含三部分)
(1)全局塊:配置服務(wù)器整體運(yùn)行的配置指令
從配置文件開始到 events 塊之間的內(nèi)容,主要會(huì)設(shè)置一些影響 nginx 服務(wù)器整體運(yùn)行的配置指令模孩,主要包括配置運(yùn)行 Nginx 服務(wù)器的用戶(組)尖阔、允許生成的 worker process 數(shù),進(jìn)程 PID 存放路徑榨咐、日志存放路徑和類型以及配置文件的引入等介却。
(2)events 塊:影響 Nginx 服務(wù)器與用戶的網(wǎng)絡(luò)連接.
events 塊涉及的指令主要影響 Nginx 服務(wù)器與用戶的網(wǎng)絡(luò)連接,常用的設(shè)置包括是否開啟對(duì)多 work process下的網(wǎng)絡(luò)連接進(jìn)行序列化块茁,是否允許同時(shí)接收多個(gè)網(wǎng)絡(luò)連接齿坷,選取哪種事件驅(qū)動(dòng)模型來處理連接請(qǐng)求,每個(gè) word process 可以同時(shí)支持的最大連接數(shù)等数焊。
這部分的配置對(duì) Nginx 的性能影響較大胃夏,在實(shí)際中應(yīng)該靈活配置。
(3)http 塊
這算是 Nginx 服務(wù)器配置中最頻繁的部分昌跌,代理、緩存和日志定義等絕大多數(shù)功能和第三方模塊的配置都在這里照雁。
需要注意的是:http 塊也可以包括 http 全局塊蚕愤、server 塊。
①饺蚊、http 全局塊
http 全局塊配置的指令包括文件引入萍诱、MIME-TYPE 定義、日志自定義污呼、連接超時(shí)時(shí)間裕坊、單鏈接請(qǐng)求數(shù)上限等。
②燕酷、server 塊
這塊和虛擬主機(jī)有密切關(guān)系籍凝,虛擬主機(jī)從用戶角度看,和一臺(tái)獨(dú)立的硬件主機(jī)是完全一樣的苗缩,該技術(shù)的產(chǎn)生是為了節(jié)省互聯(lián)網(wǎng)服務(wù)器硬件成本饵蒂。
每個(gè) http 塊可以包括多個(gè) server 塊,而每個(gè) server 塊就相當(dāng)于一個(gè)虛擬主機(jī)酱讶。
而每個(gè) server 塊也分為全局 server 塊退盯,以及可以同時(shí)包含多個(gè) locaton 塊。
全局 server 塊
最常見的配置是本虛擬機(jī)主機(jī)的監(jiān)聽配置和本虛擬主機(jī)的名稱或 IP 配置。location 塊
一個(gè) server 塊可以配置多個(gè) location 塊渊迁。
這塊的主要作用是基于 Nginx 服務(wù)器接收到的請(qǐng)求字符串(例如 server_name/uri-string)慰照,對(duì)虛擬主機(jī)名稱(也可以是 IP 別名)之外的字符串(例如 前面的 /uri-string)進(jìn)行匹配,對(duì)特定的請(qǐng)求進(jìn)行處理琉朽。地址定向毒租、數(shù)據(jù)緩存和應(yīng)答控制等功能,還有許多第三方模塊的配置也在這里進(jìn)行漓骚。
四蝌衔、Nginx 反向代理實(shí)例
1、實(shí)現(xiàn)效果
打開瀏覽器蝌蹂,在瀏覽器地址欄輸入地址 www.123.com噩斟,跳轉(zhuǎn)到 liunx 系統(tǒng) tomcat 主頁面中
2、準(zhǔn)備工作
(1)在 liunx 系統(tǒng)安裝 tomcat孤个,使用默認(rèn)端口 8080
tomcat 安裝文件放到 liunx 系統(tǒng)中剃允,解壓
進(jìn)入 tomcat 的 bin 目錄中,./startup.sh 啟動(dòng) tomcat 服務(wù)器
(2)對(duì)外開放訪問的端口
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd –reload
查看已經(jīng)開放的端口號(hào)
firewall-cmd --list-all
(3)在 windows 系統(tǒng)中通過瀏覽器訪問 tomcat 服務(wù)器
3齐鲤、訪問過程的分析
4斥废、具體配置
第一步 在 windows 系統(tǒng)的 host 文件進(jìn)行域名和 ip 對(duì)應(yīng)關(guān)系的配置
添加內(nèi)容在 host 文件中-
第二步 在 nginx 進(jìn)行請(qǐng)求轉(zhuǎn)發(fā)的配置(反向代理配置)
image.png
五、Nginx 反向代理實(shí)例2
1给郊、實(shí)現(xiàn)效果
使用 nginx 反向代理牡肉,根據(jù)訪問的路徑跳轉(zhuǎn)到不同端口的服務(wù)中
nginx 監(jiān)聽端口為 9001,
訪問 http://192.168.17.129:9001/edu/ 直接跳轉(zhuǎn)到 127.0.0.1:8080
訪問 http:// 192.168.17.129:9001/vod/ 直接跳轉(zhuǎn)到 127.0.0.1:8081
2淆九、準(zhǔn)備工作
(1)準(zhǔn)備兩個(gè) tomcat 服務(wù)器统锤,一個(gè) 8080 端口,一個(gè) 8081 端口
(2)創(chuàng)建文件夾和測(cè)試頁面
3炭庙、具體配置
-
(1)找到 nginx 配置文件饲窿,進(jìn)行反向代理配置
image.png - (2)開放對(duì)外訪問的端口號(hào) 9001 8080 8081
4、最終測(cè)試
六焕蹄、Nginx 配置實(shí)例-負(fù)載均衡
1逾雄、實(shí)現(xiàn)效果
(1)瀏覽器地址欄輸入地址 http://192.168.17.129/edu/a.html,負(fù)載均衡效果腻脏,平均 8080和 8081 端口中
2鸦泳、準(zhǔn)備工作
(1)準(zhǔn)備兩臺(tái) tomcat 服務(wù)器,一臺(tái) 8080永品,一臺(tái) 8081
(2)在兩臺(tái) tomcat 里面 webapps 目錄中辽故,創(chuàng)建名稱是 edu 文件夾,在 edu 文件夾中創(chuàng)建
頁面 a.html腐碱,用于測(cè)試
3誊垢、在 nginx 的配置文件中進(jìn)行負(fù)載均衡的配置
4掉弛、nginx 分配服務(wù)器策略
第一種 輪詢(默認(rèn))
每個(gè)請(qǐng)求按時(shí)間順序逐一分配到不同的后端服務(wù)器,如果后端服務(wù)器 down 掉喂走,能自動(dòng)剔除殃饿。-
第二種 weight
weight 代表權(quán)重默認(rèn)為 1,權(quán)重越高被分配的客戶端越多
image.png -
第三種 ip_hash
每個(gè)請(qǐng)求按訪問 ip 的 hash 結(jié)果分配,這樣每個(gè)訪客固定訪問一個(gè)后端服務(wù)器
image.png -
第四種 fair(第三方)
按后端服務(wù)器的響應(yīng)時(shí)間來分配請(qǐng)求芋肠,響應(yīng)時(shí)間短的優(yōu)先分配乎芳。
image.png
七、Nginx 配置實(shí)例-動(dòng)靜分離
1帖池、什么是動(dòng)靜分離
Nginx 動(dòng)靜分離簡(jiǎn)單來說就是把動(dòng)態(tài)跟靜態(tài)請(qǐng)求分開奈惑,不能理解成只是單純的把動(dòng)態(tài)頁面和靜態(tài)頁面物理分離。嚴(yán)格意義上說應(yīng)該是動(dòng)態(tài)請(qǐng)求跟靜態(tài)請(qǐng)求分開睡汹,可以理解成使用 Nginx處理靜態(tài)頁面肴甸,Tomcat 處理動(dòng)態(tài)頁面。動(dòng)靜分離從目前實(shí)現(xiàn)角度來講大致分為兩種囚巴,一種是純粹把靜態(tài)文件獨(dú)立成單獨(dú)的域名原在,放在獨(dú)立的服務(wù)器上,也是目前主流推崇的方案彤叉;另外一種方法就是動(dòng)態(tài)跟靜態(tài)文件混合在一起發(fā)布庶柿,通過 nginx 來分開。
通過 location 指定不同的后綴名實(shí)現(xiàn)不同的請(qǐng)求轉(zhuǎn)發(fā)秽浇。通過 expires 參數(shù)設(shè)置浮庐,可以使瀏覽器緩存過期時(shí)間,減少與服務(wù)器之前的請(qǐng)求和流量柬焕。具體 Expires 定義:是給一個(gè)資源設(shè)定一個(gè)過期時(shí)間,也就是說無需去服務(wù)端驗(yàn)證,直接通過瀏覽器自身確認(rèn)是否過期即可碰辅,所以不會(huì)產(chǎn)生額外的流量。此種方法非常適合不經(jīng)常變動(dòng)的資源没宾。(如果經(jīng)常更新的文件凌彬,不建議使用 Expires 來緩存),我這里設(shè)置 3d铲敛,表示在這 3 天之內(nèi)訪問這個(gè) URL会钝,發(fā)送一個(gè)請(qǐng)求伐蒋,比對(duì)服務(wù)器該文件最后更新時(shí)間沒有變化工三,則不會(huì)從服務(wù)器抓取,返回狀態(tài)碼 304先鱼,如果有修改,則直接從服務(wù)器重新下載掸读,返回狀態(tài)碼 200宏多。
2、準(zhǔn)備工作
在 liunx 系統(tǒng)中準(zhǔn)備靜態(tài)資源肾请,用于進(jìn)行訪問
3砌烁、具體配置
在 nginx 配置文件中進(jìn)行配置
4、最終測(cè)試
(1)瀏覽器中輸入地址
重點(diǎn)是添加 location避归,
最后檢查 Nginx 配置是否正確即可管呵,然后測(cè)試動(dòng)靜分離是否成功,只需要?jiǎng)h除后端 tomcat服務(wù)器上的某個(gè)靜態(tài)文件账锹,查看是否能訪問坷襟,如果可以訪問說明靜態(tài)資源 nginx 直接返回了,不走后端 tomcat 服務(wù)器
八廓奕、nginx原理
1档叔、mater 和 worker
2、worker 如何進(jìn)行工作的
3铃肯、一個(gè) master 和多個(gè) woker 有好處
(1)可以使用 nginx –s reload 熱部署传蹈,利用 nginx 進(jìn)行熱部署操作
(2)每個(gè) woker 是獨(dú)立的進(jìn)程,如果有其中的一個(gè) woker 出現(xiàn)問題宴胧,其他 woker 獨(dú)立的,
繼續(xù)進(jìn)行爭(zhēng)搶乞娄,實(shí)現(xiàn)請(qǐng)求過程显歧,不會(huì)造成服務(wù)中斷
4、設(shè)置多少個(gè) woker 合適
worker 數(shù)和服務(wù)器的 cpu 數(shù)相等是最為適宜的
5范删、連接數(shù) worker_connection
第一個(gè):發(fā)送請(qǐng)求拷肌,占用了 woker 的幾個(gè)連接數(shù)?
答案:2 或者 4 個(gè)
第二個(gè):nginx 有一個(gè) master添忘,有四個(gè) woker若锁,每個(gè) woker 支持最大的連接數(shù) 1024,支持的
最大并發(fā)數(shù)是多少仲器?
普通的靜態(tài)訪問最大并發(fā)數(shù)是: worker_connections * worker_processes /2仰冠,
而如果是 HTTP 作 為反向代理來說,最大并發(fā)數(shù)量應(yīng)該是 worker_connections *
worker_processes/4辆沦。