今天,我們來真正" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁 > 營銷資訊 > 網(wǎng)站運(yùn)營 > 干貨篇 | Nginx 我還真不信你學(xué)不會(中)

干貨篇 | Nginx 我還真不信你學(xué)不會(中)

時間:2023-07-14 13:00:01 | 來源:網(wǎng)站運(yùn)營

時間:2023-07-14 13:00:01 來源:網(wǎng)站運(yùn)營

干貨篇 | Nginx 我還真不信你學(xué)不會(中):在《干貨篇 | Nginx 我還真不信你學(xué)不會(上)》中,我們大概對Nginx有一了一個大概印象:我們知道了Nginx是干什么用的、什么是反向代理和正向代理以及什么是負(fù)載均衡。

今天,我們來真正上手操作一下,俗話說“實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)”嘛,光聽理論不上手操作,你永遠(yuǎn)也學(xué)不透。

關(guān)于Nginx的內(nèi)容其實(shí)有很多,特別是模塊部分的,如果我全部都列出來那5篇文章都寫不完,所以我在這里給上Nginx官方文檔鏈接,它里面有詳細(xì)的教程。作為一名極客,我們要學(xué)會當(dāng)遇到不懂的問題時去翻閱官網(wǎng)文檔。

官方文檔










下面我將今天要講的內(nèi)容做了一個思維導(dǎo)圖:













Nginx初體驗(yàn)




首先先打開我們的機(jī)器,以下是我的機(jī)器的配置:

系統(tǒng):CentOS 7.6

處理器:1個

內(nèi)存:1G




我們使用yum安裝方式來安裝Nginx

yum install -y nginx


安裝完畢之后啟動Nginx

systemctl start nginx


設(shè)置成開機(jī)自啟動

systemctl enable nginx


關(guān)閉我們的防火墻和SELinux,不然等下訪問不了我們的Nginx網(wǎng)站

#關(guān)閉防火墻systemctl stop firewalld.service?#暫時關(guān)閉SELinuxsetenforce 0


我們還可以進(jìn)入到SELinux配置文件里面,對其進(jìn)行永久關(guān)閉

vim /etc/selinux/config











其實(shí)啟動Nginx還有另一種命令,是nginx自帶的,建議使用nginx自帶命令

nginx


啟動完畢后我們訪問一下,因?yàn)榕渲梦募镆呀?jīng)指明默認(rèn)端口為80,網(wǎng)址后面不寫端口號也行,它訪問的就是默認(rèn)頁面。

訪問本機(jī)地址:80











相關(guān)配置文件

下面我們來看看nginx的一些配置文件




nginx主配置文件

/etc/nginx/nginx.conf





這個配置文件是存放了一下nginx相關(guān)基礎(chǔ)配置,例如:默認(rèn)端口、日志格式、默認(rèn)網(wǎng)站,worker進(jìn)程的管理用戶等等




配置目錄

/etc/nginx/conf.d/這個是一個目錄,里面通常是存放虛擬主機(jī)的一些配置,比如說我們要做一個博客網(wǎng)站和論壇網(wǎng)站,就可以分別定義這兩個網(wǎng)站的配置文件,然后存放到這個目錄下。就不用都把配置寫進(jìn)主配置文件里,顯得更簡潔美觀











介紹完這兩個,我們來看看主配置文件里面的具體內(nèi)容

主配置文件里面其實(shí)還分為幾個區(qū)域:main區(qū)域,event區(qū)域等




main區(qū)域:

主配置段,也就是全局配置段

cat /etc/nginx/nginx.conf=====================第一個部分,配置文件的主區(qū)域======================user nginx; # 定義worker進(jìn)程的管理用戶worker_processes auto; # 定義worker進(jìn)程數(shù),auto會自動調(diào)整為cpu核數(shù)worker_cpu_affinity auto [cpumask] #提高緩存命中率,將worker與cpu綁定 CPU MASK:00000001:第一個CPU 00000010:第二個CPU worker_cpu_affinity 0001 0010 0100 1000;worker_priority number#指定worker進(jìn)程的nice值,設(shè)定worker進(jìn)程優(yōu)先級: [-20,20](最大為19)worker_rlimit_ nofile number #worker進(jìn)程所能夠打開的文件數(shù)量上限,如65535error_log /var/log/nginx/error.log; # 定義錯誤日志pid /run/nginx.pid; # 指定存儲nginx主進(jìn)程的PID文件路徑include /usr/share/nginx/modules/*.conf; #指明包含進(jìn)來的其他配置文件片段daemon on|off #是否以守護(hù)進(jìn)程方式運(yùn)行nginxmaster_ process on|off #是否以master/worker模型運(yùn)行nginx,默認(rèn)為on









事件區(qū)域

事件驅(qū)動相關(guān)的配置

因?yàn)閚ginx是基于事件驅(qū)動架構(gòu),而且使用異步網(wǎng)絡(luò)IO模型

...events { worker_connections 1024; # 定義一個worker進(jìn)程可以同時接受1024個請求 #總最大并發(fā)數(shù): worker_processes * worker_ connections use method #指明并發(fā)連接請求的處理方法,默認(rèn)為epoll use poll; accept_mutex on|off #處理新的連接請求的方法; on指由各個worker輪流處理新請求, Off指每個新請求的到達(dá)都會通知(喚醒)所有的worker進(jìn)程,但只有一個進(jìn)程可獲得連接,造成 “驚群”,影響性能}









http區(qū)域

跟http協(xié)議有關(guān)的配置,里面還包括了server也就是虛擬主機(jī)的配置

...http { 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; # 允許sendfile方式傳輸文件tcp_nopush on; # 在sendfile啟動下,使用TCP_CORK套接字tcp_nodelay on; # 接連接保持活動狀態(tài)keepalive_timeout 65; # 超時時間types_hash_max_size 2048;# 連接超時時間include /etc/nginx/mime.types; # 文件擴(kuò)展名與文件類型映射表default_type application/octet-stream; # 默認(rèn)文件類型,默認(rèn)為text/plaininclude /etc/nginx/conf.d/*.conf; #虛擬主機(jī)目錄server { listen 80 default_server; # 指定監(jiān)聽的端口 listen [::]:80 default_server; server_name _; # 指定網(wǎng)站主機(jī)名 root /usr/share/nginx/html; # 定義站點(diǎn)目錄的位置 include /etc/nginx/default.d/*.conf; # 定義首頁文件 location / {} error_page 404 /404.html; # 定義優(yōu)雅顯示頁面信息 location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { }}


我們可以根據(jù)不同的需求來對配置文件進(jìn)行修改,最好認(rèn)真看一下上面的配置文件每個字段的具體意思,面試官有可能會問到哦




下面我們來講講nginx核心模塊中的HTTP模塊

模塊介紹




在nginx的核心模塊中,有這么一個模塊,nginx的網(wǎng)站服務(wù)就是由它來具體實(shí)現(xiàn)的,它就是HTTP模塊。

HTTP模塊中又細(xì)分成好多個小的模塊,分別實(shí)現(xiàn)不同的具體功能,比如說:重定向,訪問控制,日志功能等

今天我們主要講一下http模塊中nginx_http_core_module模塊




nginx_http_core_module

這個模塊是用來配置虛擬主機(jī)的,下面是它的一個整體內(nèi)容

server{ listen adress[:PORT]PORT; server_name SERVER_NAME; root /PATH/TO/DOCUMENT_ROOT;}


比如說我們的這個虛擬主機(jī)監(jiān)聽的是80端口、主機(jī)名字叫www.a.com、網(wǎng)頁所在路徑為/data/web1,我們可以這樣配置

server{ listen 80; server_name www.a.com; root /data/web1; location / { }}


我們還可以設(shè)置默認(rèn)監(jiān)聽端口,只需要在listen字段后面加上default_ server就行了,這樣的話網(wǎng)址就是默認(rèn)80端口

listen 80 default_ server;


我們還可以不同虛擬主機(jī)監(jiān)聽不同的端口

listen 80listen 8080listen 8888


還可以設(shè)置不同虛擬主機(jī)的ip地址

listen 192.168.1.1:80listen 192.168.1.2:80


配置完監(jiān)聽端口之后,我們來配置主機(jī)名稱




比如說我們設(shè)置一個主機(jī)名為www.xxoo.com

server_name www.xxoo.com;


給它起兩個名字也可以

server_name www.xxoo.com www.ooxx.com;


我們簡單介紹一下名稱匹配的優(yōu)先級,等級是由高到低

(1) 首先是字符串精確匹配如: www.xxoo.com(2) 左側(cè)*通配符如: *.xxoo.com(3) 右側(cè)通配符如: www.xxoo.(4) 正則表達(dá)式如: ~^.*/.xxoo.com$(5) 默認(rèn)主機(jī) default_ server


我們接著講一下跟路徑相關(guān)的內(nèi)容




比如說我們想用戶輸入www.xxoo.com 訪問到的是我服務(wù)器的/www/html/目錄

server{ server_name www.xxoo.com; root /www/html;}http://www.xxoo.com/index.html ----> /www/html/index.html


我們其實(shí)還可以配置多個location來實(shí)現(xiàn)多個uri到文件系統(tǒng)的路徑映射,ngnix會根據(jù)用戶請求的URI來檢查定義的所有l(wèi)ocation ,并找出一個最佳匹配




比如說我想用戶輸入www.xxoo.com/1.html時訪問到的是我服務(wù)器上/www/html 目錄下的1.html文件

server{ server_name www.xxoo.com; root /www/html; location / { /www/html/; }}http://www.xxoo.com/1.html ----> /www/html/1.html


或者想讓用戶輸入www.xxoo.com/images/1.jpg時訪問到的是我服務(wù)器上 /data/images 目錄下的1.jpg文件

server{ server_name www.xxoo.com; root /www/html; location /images{ /data/images }}http://www.xxoo.com/images ----> /data/images/1.jpg


除此之外,我們還可以使用路徑別名

server{ listen 80; server_name www.salted.com; location /bbs/{ alias /web/forum/; } http: //www.salted.com/bbs/index.html ----> /web/forum/index.html


路徑別名是文檔映射的另一種機(jī)制,我們放在一起來對比一下

路徑別名:server{ listen 80; server_name www.salted.com; location /bbs/{ alias /web/forum/; http://www.salted.com/bbs/index.html ----> /web/forum/index.html路徑映射server{ listen 80; server_name www.salted.com; location /bbs/{ root /web/forum/; } http://www.salted.com/bbs/index.html ----> /web/forum/bbs/index.html


有時候訪問網(wǎng)站出現(xiàn)錯誤時,一般的錯誤頁面都不太友好。這時候我們可以定義錯誤頁面。

server{ listen 80; server_name www.salted.com; error_page 404 /404.html; location /404.html { root /data/error/; }}這樣我們訪問后如果碰到404錯誤的話就會顯示出我們指定的錯誤頁面。




此外我們還可以指定響應(yīng)狀態(tài)碼,比如說我們訪問網(wǎng)站遇到404錯誤,但是我們不希望返回給用戶的狀態(tài)碼是404,我們可以指定其他狀態(tài)碼。這樣的話返回給用戶的是其他狀態(tài)碼,但是頁面還是404頁面

server{ listen 80; server_name www.salted.com; error_page 404=200 /404.htmL; location /404.html { root /data/error/; }}


其實(shí)在nginx_http_core_module中還有很多其他的配置字段,這里就不多詳細(xì)介紹了,感興趣的可以去訪問Nginx的官網(wǎng)查看官方文檔。文章開頭已經(jīng)附上了。




下面我們將真正開始搭建我們的虛擬主機(jī)(網(wǎng)站)




Nginx實(shí)操

首先搭建一個虛擬主機(jī),這次案例我用到的機(jī)器是如下配置:

CentOS7.6

CPU:1個

內(nèi)存:1G

本機(jī)ip地址:192.168.244.128




還記得我們上文講到的通常用來存放模塊的那個/etc/nginx/con.d/目錄嗎,我們需要將虛擬主機(jī)(網(wǎng)站)的配置文件放進(jìn)里面,nginx啟動或重啟時會掃描里面的配置文件。




首先編寫我們的網(wǎng)站相關(guān)配置




這個虛擬主機(jī)監(jiān)聽的是8080端口,網(wǎng)站域名為www.salted.com,訪問到的網(wǎng)絡(luò)資源在服務(wù)器的路徑為/usr/share/nginx/html目錄下

vim /etc/nginx/conf.d/www.confserver { listen 8080; server_name www.xxoo.com; location / { root /usr/share/nginx/html; index my_index.html; }}


每次修改完配置文件記得讓nginx重啟一下,如下命令可以讓nginx平滑重啟

nginx -s reload


接下來我們要編寫我們的html文件

vim /usr/share/nginx/html/my_index.html


接下來我們編寫hosts文件,實(shí)現(xiàn)域名解析。這樣直接訪問域名就能訪問到網(wǎng)站了。

vim /etc/hosts192.168.244.128 www.xxoo.com如果想要在Windows上通過訪問域名就能訪問到網(wǎng)站的話,我們要在Windows上設(shè)置域名解析

Windows的hosts文件地址為:C:/Windows/System32/drivers/etc

接下來我們來驗(yàn)證一下

在linux系統(tǒng)上使用如下命令: 記得寫上8080端口,不然訪問的是默認(rèn)頁面 curl www.xxoo.com:8080










在Windows上直接輸入ip地址或者域名







這樣我們的第一個虛擬主機(jī)就配置完成了!




如果說我們想要訪問多個資源的話,我們就要配置多個文件路徑

server{ listen 8080 ; server_name www.xxoo.com; root /usr/share/nginx/html; location / { index my_index.html; } location /data { root /web/; } location /web/images { root /web/; }}


別忘了每次更新完配置文件都要重啟一下

nginx -s reload


接下來創(chuàng)建我們存放文件的相關(guān)目錄并分別寫入內(nèi)容

mkdir -pv /web/{data,images}echo "this is /web/data" > /web/data/index.htmlecho "this is /web/images" > /web/images/index.html```








我們訪問來驗(yàn)證一下:










比如說我們訪問一個不存在的網(wǎng)頁,

像www.xxoo.com:8080/xxoo/index.html

就會顯示如下錯誤頁面










這個頁面其實(shí)不太友好,我們可以自定義一個錯誤頁面

server{ listen 8080 ; server_name www.xxoo.com; root /usr/share/nginx/html; error_page 404 /404.html; location / { index my_index.html; } location /data { root /web/; } location /images { root /web/; } location /404.html { root /web/pages/; }}```創(chuàng)建存放錯誤頁面的目錄

mkdir /web/pages


創(chuàng)建錯誤頁面

vim /web/pages/404.html<h1>this is 404 error!</h1>```驗(yàn)證如下










最后,我們再來講下如何配置多個虛擬主機(jī)

首先在/etc/nginx/con.d/目錄下創(chuàng)建我們的各個虛擬主機(jī)配置文件并配置好

touch /etc/nginx/conf.d/{bbs,blog,www}.conf


#第一個虛擬主機(jī)vim /etc/nginx/conf.d/bbs.confserver { listen 8080; server_name bbs.com; location / { root /html/bbs; index index.html; }}#第二個虛擬主機(jī)vim /etc/nginx/conf.d/blog.confserver { listen 8080; server_name blog.com; location / { root /html/blog; index index.html; }}#第三個虛擬主機(jī)vim /etc/nginx/conf.d/www.confserver { listen 8080; server_name www.com; location / { root /html/www; index index.html; }}


準(zhǔn)備存放網(wǎng)絡(luò)資源的目錄

mkdir -p /html/{www,bbs,blog}for name in {www,bbs,blog};do echo "<h1> $name </h1>" >/html/$name/index.html;done;;


添加域名解析

vim /etc/hosts192.168.33.133 www.eagle.com bbs.eagle.com blog.eagle.com


更新配置文件后平滑重啟

nginx -s reload


最后驗(yàn)證

curl www.com:8080<h1> www </h1>curl bbs.com:8080<h1> bbs </h1>curl blog.com:8080<h1> blog </h1>

關(guān)鍵詞:干貨

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉