Nginx 快速入門
一、nginx簡(jiǎn)介
1、什么是Nginx
Nginx 是?款?性能的 http 服務(wù)器/反向代理服務(wù)器及電?郵件(IMAP/POP3)代理服務(wù)器。由俄羅斯的程序設(shè)計(jì)師伊?爾·?索夫(Igor Sysoev)所開發(fā),官?測(cè)試 nginx 能夠??撐 5 萬(wàn)并發(fā)鏈接,并且cpu、內(nèi)存等資源消耗卻?常低,運(yùn)??常穩(wěn)定。
Nginx應(yīng)?場(chǎng)景:
1、http 服務(wù)器。 Nginx 是?個(gè) http 服務(wù)可以獨(dú)?提供 http 服務(wù)。可以做??靜態(tài)服務(wù)器。
2、虛擬主機(jī)。 可以實(shí)現(xiàn)在?臺(tái)服務(wù)器虛擬出多個(gè)?站。例如個(gè)??站使?的虛擬主機(jī)。
3、反向代理,負(fù)載均衡。 當(dāng)?站的訪問(wèn)量達(dá)到?定程度后,單臺(tái)服務(wù)器不能滿??戶的請(qǐng)求時(shí),需要?多臺(tái)服務(wù)器集群可以使? nginx 做反向代理。并且多臺(tái)服務(wù)器可以平均分擔(dān)負(fù)載,不會(huì)因?yàn)槟撑_(tái)服務(wù)器負(fù)載?宕機(jī)?某臺(tái)服務(wù)器閑置的情況。
二、Nginx安裝
1、搜索nginx鏡像
docker?search?nginx
2、拉取nginx鏡像
docker?pull?nginx
3、創(chuàng)建容器,設(shè)置端?映射、?錄映射
#?在/root?錄下創(chuàng)建nginx?錄?于存儲(chǔ)nginx數(shù)據(jù)信息
mkdir?~/nginx
cd?~/nginx
mkdir?conf
cd?conf
#?在~/nginx/conf/下創(chuàng)建nginx.conf?件,粘貼下?內(nèi)容
vim?nginx.conf
user?nginx;
worker_processes?1;
error_log?/var/log/nginx/error.log?warn;
pid?/var/run/nginx.pid;
events?{
?worker_connections?1024;?}
http?{
?include?/etc/nginx/mime.types;
?default_type?application/octet-stream;
?log_format?main?'$remote_addr?-?$remote_user?[$time_local]?"$request"?'
?'$status?$body_bytes_sent?"$http_referer"?'
?'"$http_user_agent"?"$http_x_forwarded_for"';
?access_log?/var/log/nginx/access.log?main;
?sendfile?on;
??#tcp_nopush?on;
??keepalive_timeout?65;
??#gzip?on;
??include?/etc/nginx/conf.d/*.conf;
}
~/nginx/conf.d/80.conf
server?{
?listen?80;?#?監(jiān)聽的端?
?server_name?localhost;?#?域名或ip
?location?/?{?#?訪問(wèn)路徑配置
?root?/usr/share/nginx/html;#?根?錄
?index?index.html?index.htm;?#?默認(rèn)??
?}
?error_page?500?502?503?504?/50x.html;?#?錯(cuò)誤??
?location?=?/50x.html?{
?root?html;
?}
}
#docker容器創(chuàng)建掛載
docker?run?-id?--name=c_nginx?\
-p?80:80?\
-p?81:81?\
-p?82:82?\
-v?$PWD/conf/nginx.conf:/etc/nginx/nginx.conf?\
-v?$PWD/conf.d:/etc/nginx/conf.d?\
-v?$PWD/logs:/var/log/nginx?\
-v?$PWD/html:/usr/share/nginx/html?\
nginx
1、-p 80:80:將容器的 80端?映射到宿主機(jī)的 80 端?。
2、-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:將主機(jī)當(dāng)前?錄下的/conf/nginx.conf 掛載到容器的 /etc/nginx/nginx.conf配置?錄
3、-v $PWD/logs:/var/log/nginx:將主機(jī)當(dāng)前?錄下的 logs ?錄掛載到容器的/var/log/nginx?志?錄
三、Nginx靜態(tài)?站部署
1、靜態(tài)?站的部署
將/資料/靜態(tài)??/index?錄下的所有內(nèi)容 上傳到服務(wù)器的/usr/local/nginx/html下即可訪問(wèn)
2、 配置虛擬主機(jī)
nginx虛擬主機(jī),也叫“?站空間”,就是把?臺(tái)運(yùn)?在互聯(lián)?上的物理服務(wù)器劃分成多個(gè)“虛擬”服務(wù)器。虛擬主
機(jī)技術(shù)極?的促進(jìn)了?絡(luò)技術(shù)的應(yīng)?和普及。同時(shí)虛擬主機(jī)的租?服務(wù)也成了?絡(luò)時(shí)代的?種新型經(jīng)濟(jì)形式。
2.1、端?綁定
1)上傳靜態(tài)?站:
將/資料/靜態(tài)??/index?錄上傳?
/usr/local/nginx/index下將/資料/靜態(tài)??/regist?錄上傳?
/usr/local/nginx/regist下
2)修改Nginx 的配置?件:~/nginx/config.d/port.conf
server?{
??listen?81;?#?監(jiān)聽的端?
?server_name?localhost;?#?域名或ip
??location?/?{?#?訪問(wèn)路徑配置
???root?/usr/share/nginx/index;#?根?錄
???index?index.html?index.htm;?#?默認(rèn)??
??}
?error_page?500?502?503?504?/50x.html;?#?錯(cuò)誤??
??location?=?/50x.html?{
???root?html;
??}
?}
?server?{
??listen?82;?#?監(jiān)聽的端?
??server_name?localhost;?#?域名或ip
??location?/?{?#?訪問(wèn)路徑配置
???root?/usr/share/nginx/regist;#?根?錄
???index?regist.html;?#?默認(rèn)??
??}
??error_page?500?502?503?504?/50x.html;?#?錯(cuò)誤??
??location?=?/50x.html?{
???root?html;
??}
?
?}
3)訪問(wèn)測(cè)試:
地址欄輸?http://你的虛擬機(jī)IP/:81?可以看到???
地址欄輸?http://你的虛擬機(jī)IP/:82?可以看到注冊(cè)??
三、Nginx反向代理與負(fù)載均衡
1、反向代理
1.1、什么是反向代理
反向代理(Reverse Proxy)?式是指以代理服務(wù)器來(lái)接受internet上的連接請(qǐng)求,然后將請(qǐng)求轉(zhuǎn)發(fā)給內(nèi)部?絡(luò)上的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給internet上請(qǐng)求連接的客戶端,此時(shí)代理服務(wù)器對(duì)外就表現(xiàn)為?個(gè)反向代理服務(wù)器。
?先我們先理解正向代理,如下圖:

正向代理是針對(duì)你的客戶端,?反向代理是針對(duì)服務(wù)器的,如下圖:

1.2、配置反向代理準(zhǔn)備?作
在docker中部署tomcat
1、搜索tomcat鏡像
docker?search?tomcat
2、拉取tomcat鏡像
docker?pull?tomcat
3、創(chuàng)建容器,設(shè)置端?映射、?錄映射
#?在/root?錄下創(chuàng)建tomcat?錄?于存儲(chǔ)tomcat數(shù)據(jù)信息
mkdir?~/tomcat
cd?~/tomcat
docker?run?-id?--name=c_tomcat?\
-p?8080:8080?\
-v?$PWD:/usr/local/tomcat/webapps?\
tomcat
參數(shù)說(shuō)明:
-p 8080:8080: 將容器的8080端?映射到主機(jī)的8080端?
-v $PWD:/usr/local/tomcat/webapps: 將主機(jī)中當(dāng)前?錄掛載到容器的webapps
4、 使?外部機(jī)器訪問(wèn)tomcat
1.3 配置反向代理
~/nginx/config.d/proxy.conf
upstream?tomcat-me{
?server?192.168.220.12:8080;
}
?server?{
??listen?80;?#?監(jiān)聽的端?
??server_name?www.me.com;?#?域名或ip
??location?/?{?#?訪問(wèn)路徑配置
???#?root?index;#?根?錄
???proxy_pass?http://tomcat-me;
???index?index.html?index.htm;?#?默認(rèn)???
??}
?}
重新啟動(dòng)Nginx 然后?瀏覽器測(cè)試:http://www.me.com (此域名須配置域名指向)
2、負(fù)載均衡
2.1 什么是負(fù)載均衡
負(fù)載均衡建?在現(xiàn)有?絡(luò)結(jié)構(gòu)之上,它提供了?種廉價(jià)有效透明的?法擴(kuò)展?絡(luò)設(shè)備和服務(wù)器的帶寬、增加吞吐量、加強(qiáng)?絡(luò)數(shù)據(jù)處理能?、提??絡(luò)的靈活性和可?性。
負(fù)載均衡,英?名稱為L(zhǎng)oad Balance,其意思就是分?jǐn)偟蕉鄠€(gè)操作單元上進(jìn)?執(zhí)?,例如Web服務(wù)器、FTP服務(wù)器、企業(yè)關(guān)鍵應(yīng)?服務(wù)器和其它關(guān)鍵任務(wù)服務(wù)器等,從?共同完成?作任務(wù)。
2.2 配置負(fù)載均衡準(zhǔn)備?作
(1)使?docker創(chuàng)建3個(gè)tomcat容器,端?分別為8080 ,8081,8082 。
docker?run?-id?--name=c_tomcat1?\
-p?8081:8080?\
-v?$PWD:/usr/local/tomcat/webapps?\
tomcat
docker?run?-id?--name=c_tomcat2?\
-p?8082:8080?\
-v?$PWD:/usr/local/tomcat/webapps?\
tomcat
docker?run?-id?--name=c_tomcat3?\
-p?8083:8080?\
-v?$PWD:/usr/local/tomcat/webapps?\
tomcat
(2)分別啟動(dòng)這三個(gè)tomcat服務(wù)。
(3)為了能夠區(qū)分是訪問(wèn)哪個(gè)服務(wù)器的?站,可以在??標(biāo)題加上標(biāo)記以便區(qū)分。
2.3 配置負(fù)載均衡
修改 Nginx配置?件:lb.conf
?upstream?tomcat-huike?{
??server?192.168.220.12:8080;
?server?192.168.220.12:8081;
??server?192.168.220.12:8082;
?}
?server?{
??listen?80;?#?監(jiān)聽的端?
??server_name?www.huike.com;?#?域名或ip
??location?/?{?#?訪問(wèn)路徑配置
??#?root?index;#?根?錄
??proxy_pass?http://tomcat-huike;
??index?index.html?index.htm;?#?默認(rèn)??
??}
??error_page?500?502?503?504?/50x.html;?#?錯(cuò)誤??
??location?=?/50x.html?{
???root?html;
??}
?}
部署并訪問(wèn)項(xiàng)目,刷新觀察每個(gè)??的標(biāo)題,看是否不同。
經(jīng)過(guò)測(cè)試,三臺(tái)服務(wù)器出現(xiàn)的概率各為33.3333333%,交替顯示。
如果其中?臺(tái)服務(wù)器性能?較好,想讓其承擔(dān)更多的壓?,可以設(shè)置權(quán)重。
?如想讓NO.1出現(xiàn)次數(shù)是其它服務(wù)器的2倍,則修改配置如下:
upstream?tomcat-travel?{
?server?192.168.177.129:8080;
?server?192.168.177.129:8081?weight=2;
?server?192.168.177.129:8082;
?}
以上則為nginx-docker的快速入門教學(xué),感謝各位閱覽!
來(lái)源:https://blog.csdn.net/weixin_51130354
-End-
最近有一些小伙伴,讓我?guī)兔φ乙恍?面試題?資料,于是我翻遍了收藏的 5T 資料后,匯總整理出來(lái),可以說(shuō)是程序員面試必備!所有資料都整理到網(wǎng)盤了,歡迎下載!

面試題】即可獲取