摘要:主進(jìn)程的主要目的就是讀取和評(píng)估配置,并且維護(hù)工作進(jìn)程。工作進(jìn)程實(shí)際上是處理請(qǐng)求。下一步,使用上一小節(jié)的服務(wù)器配置塊并將其修改為代理服務(wù)器配置。符合響應(yīng)的請(qǐng)求將會(huì)映射到文件夾。為了使新的配置文件生效,發(fā)送信號(hào)給
概述
??譯文。參考官方文檔
??這篇指南描述了如何啟動(dòng)、停止nginx,重新加載配置,并且解釋了配置文件的結(jié)構(gòu),描述了如何設(shè)置nginx去服務(wù)靜態(tài)內(nèi)容,如何配置nginx作為代理服務(wù)器等。
??nginx有一個(gè)主進(jìn)程和若干個(gè)工作進(jìn)程。主進(jìn)程的主要目的就是讀取和評(píng)估配置,并且維護(hù)工作進(jìn)程。工作進(jìn)程實(shí)際上是處理請(qǐng)求。nginx使用以事件為基礎(chǔ)的模型并且依賴(lài)操作系統(tǒng)的機(jī)制去描述在工作進(jìn)程中的請(qǐng)求。工作進(jìn)程的數(shù)量定義在配置文件中,對(duì)于一個(gè)特定的配置,這個(gè)數(shù)量可能是固定的,或者根據(jù)CPU的線(xiàn)程數(shù)來(lái)自動(dòng)調(diào)整。
??nginx和它的模塊的工作方式是由配置文件決定的。默認(rèn)情況下,配置文件是以nginx.config命名的,并且在/usr/local/nginx/conf目錄,/etc/nginx目錄,或者/usr/local/etc/nginx目錄
開(kāi)始,停止和重新加載??啟動(dòng)nginx,運(yùn)行可執(zhí)行文件。一旦nginx已經(jīng)啟動(dòng),它就可以通過(guò)調(diào)用帶有-s的參數(shù)來(lái)控制。使用語(yǔ)法:nginx -s signal
??singal可以被下面任意一個(gè)替換
stop - 快速停止
quit - 優(yōu)雅的停止
reload - 重新加載配置文件
reopen - 重新打開(kāi)日志文件
??例如,等所有工作進(jìn)程完成服務(wù)器的當(dāng)前請(qǐng)求時(shí),停止nginx進(jìn)程,用如下命令nginx -s quit
??重新加載配置文件的命令發(fā)送到nginx或者nginx重啟的時(shí)候,配置文件改變的內(nèi)容才會(huì)生效。重新加載執(zhí)行nginx -s reload
??一旦主進(jìn)程接收到重新加載的信號(hào),它會(huì)檢查新的配置文件的語(yǔ)法是否合法,并且試著去執(zhí)行配置文件里的內(nèi)容。如果成功了,主進(jìn)程會(huì)開(kāi)始新的工作進(jìn)程并且發(fā)送信息給老的工作進(jìn)程,請(qǐng)求它們停止。否則主進(jìn)程就會(huì)回滾配置并繼續(xù)執(zhí)行老的工作進(jìn)程。老的工作進(jìn)程接收到停止的命令,停止接收新的請(qǐng)求連接并且繼續(xù)執(zhí)行當(dāng)前的請(qǐng)求直到所有的請(qǐng)求都處理完成。
??查看正在執(zhí)行的nginx進(jìn)程列表,用這個(gè)方式:ps -ax | grep nginx
??nginx是由定義在配置文件中的指令所控制的模塊組成。這些指令被分成簡(jiǎn)單的指定和成塊的指令。一個(gè)簡(jiǎn)單的指令由名稱(chēng)和用空格、分號(hào)分隔開(kāi)的參數(shù)組成。塊指令和簡(jiǎn)單的指令有著相同的結(jié)構(gòu),但是替代分號(hào)的是,它是由一系列環(huán)繞在括號(hào)花括號(hào)周?chē)母郊拥闹噶罱Y(jié)尾。如果一個(gè)塊指令在內(nèi)部的括號(hào)里有其他的指令,它被稱(chēng)為內(nèi)容(列如:events,http,server,location)
??處在配置文件中所有內(nèi)容之外的指令被認(rèn)為是main內(nèi)容。events和http指令存在main內(nèi)容中,server在http,location在server
??Web服務(wù)器一個(gè)重要的任務(wù)就是提供外部文件(比如像圖片或者靜態(tài)的HTML請(qǐng)求)。你可以實(shí)現(xiàn)一個(gè)例子,根據(jù)請(qǐng)求文件將會(huì)從不同的目錄中提供:/data/www里面包含了HTML文件,/data/images包括了圖片。這需要編輯配置文件并且要在http塊中設(shè)置帶有兩個(gè)location塊的服務(wù)塊。
??首先,創(chuàng)建/data/wwww文件夾并且在文件夾里面放一個(gè)帶有一些文字內(nèi)容的index.html文件,然后創(chuàng)建/data/images文件夾把一些圖片放進(jìn)去。
??下一步,打開(kāi)配置文件,默認(rèn)的配置文件已經(jīng)包括了一些server塊的例子,大多數(shù)是注釋掉了。現(xiàn)在注釋掉所有的塊,并開(kāi)始一個(gè)新的server塊。
http { server { } }
??通常來(lái)說(shuō),配置文件可能包含一些通過(guò)監(jiān)聽(tīng)的端口或者服務(wù)名稱(chēng)進(jìn)行區(qū)分的server塊。一旦nginx決定了哪一個(gè)server去處理一個(gè)請(qǐng)求,它根據(jù)服務(wù)器塊中定義的位置指令的參數(shù)測(cè)試請(qǐng)求頭中指定的URI。
??添加如下location塊到server塊中
location / { root /data/www; }
??location 塊定義了“/”前綴同來(lái)自請(qǐng)求中的URI做比較。對(duì)于匹配的請(qǐng)求,這個(gè)URI會(huì)被添加到定義在root指令的路徑中,也就是說(shuō),對(duì)于/data/www,會(huì)在本地文件系統(tǒng)上形成被請(qǐng)求的路徑。如果有許多匹配的location塊,nginx會(huì)選擇最長(zhǎng)前綴的一個(gè)。上面的location塊提供了長(zhǎng)度是一的最短的前綴,所以只有其他的location塊無(wú)法提供匹配是,才會(huì)使用這個(gè)位置塊。
??下一步,添加第二個(gè)位置塊
location /images/ { root /data; }
??對(duì)于以/images開(kāi)始的請(qǐng)求將會(huì)有一個(gè)匹配(location /當(dāng)然也配置這些請(qǐng)求,但是這是更短的前綴)
??server塊的的配置結(jié)果應(yīng)該如下:
server { location / { root /data/www; } location /images/ { root /data; } }
??這已經(jīng)是一個(gè)監(jiān)聽(tīng)80端口的工作服務(wù)器的配置了,并且可以通過(guò)本地機(jī)器的上的http://localhost/接入。響應(yīng)以/images/開(kāi)頭的URI請(qǐng)求,服務(wù)器會(huì)從/data/images文件夾下發(fā)送文件。例如,響應(yīng)http://localhost/images/example.png的請(qǐng)求,nginx會(huì)發(fā)送/data/images/example.png文件。如果這樣的文件沒(méi)有找到,那么nginx會(huì)響應(yīng)指示的404錯(cuò)誤。沒(méi)有以/images/開(kāi)頭的URI請(qǐng)求將會(huì)匹配到/data/www目錄。例如,響應(yīng)http://localhost/some/example.html的請(qǐng)求,nginx會(huì)發(fā)送/data/www/some/example.html文件。
??為了讓新的配置生效,啟動(dòng)nginx如果還沒(méi)有啟動(dòng),如果啟動(dòng)了就執(zhí)行reload命令:nginx -s reload
??以防事情沒(méi)有像預(yù)期那樣工作,你可以試著在access.log和error.log找原因,文件在/usr/local/nginx或者/var/log/nginx
??nginx使用最頻繁之一的就是把它設(shè)置為代理服務(wù)器,這也就意味著服務(wù)接收請(qǐng)求,并把他們傳遞到代理服務(wù)器,然后從代理服務(wù)器取回響應(yīng)并發(fā)送到客戶(hù)端。
??我們將配置一個(gè)基本的代理服務(wù)器,它使用本地目錄中的文件來(lái)處理圖像請(qǐng)求,并將所有的請(qǐng)求發(fā)送到一個(gè)代理服務(wù)器。在這個(gè)示例中,兩個(gè)服務(wù)器都定義在一個(gè)nginx實(shí)例。
??首先,通過(guò)在nginx配置文件中添加一個(gè)包含如下內(nèi)容的Server塊來(lái)定義代理服務(wù)器
server { listen 8080; root /data/up1; location / { } }
??這將是一個(gè)監(jiān)聽(tīng)8080端口的簡(jiǎn)單的服務(wù)器(很明顯,由于使用了標(biāo)準(zhǔn)的80端口,所以listen指定沒(méi)有被指定)并且將所有的請(qǐng)求映射到本地的/data/up1/目錄。創(chuàng)建這個(gè)目錄然后把index.html文件放到這個(gè)目錄下。注意的是root指令被放在了server內(nèi)容里。當(dāng)為處理請(qǐng)求選定的location塊不包括自己的根指令的時(shí)候,使用這樣的root指令。
??下一步,使用上一小節(jié)的服務(wù)器配置塊并將其修改為代理服務(wù)器配置。在第一個(gè)location塊中,將proxy_pass指令和帶有代理服務(wù)器協(xié)議,名稱(chēng),端口號(hào)的參數(shù)放在一起。
server { location / { proxy_pass http://localhost:8080; } location /images/ { root /data; } }
我們會(huì)修改第二個(gè)location塊,即當(dāng)前帶有/images/為前綴的請(qǐng)求映射到/data/images/目錄下的文件。為了讓它匹配帶有特殊文件擴(kuò)展名的圖片請(qǐng)求,像下面這樣修改location塊
location ~ .(gif|jpg|png)$ { root /data/images; }
??這個(gè)參數(shù)是一個(gè)匹配所有以.gif,.jpg,或者是.png結(jié)尾的URI的正則表達(dá)式。所有的正則表達(dá)式都應(yīng)該以~開(kāi)始。符合響應(yīng)的請(qǐng)求將會(huì)映射到/data/images/文件夾。
??當(dāng)nginx選擇一個(gè)location塊去處理一個(gè)請(qǐng)求的時(shí)候,它首先要檢查指定前綴的location指令,用最長(zhǎng)前綴記住位置,然后檢查正則表達(dá)式。如果有匹配的正則表達(dá)式,nginx會(huì)挑選這個(gè)位置,否則的話(huà)會(huì)選擇之前記住的一個(gè)。
??一個(gè)代理服務(wù)器的配置結(jié)果像這樣
server { location / { proxy_pass http://localhost:8080/; } location ~ .(gif|jpg|png)$ { root /data/images; } }
??服務(wù)器會(huì)過(guò)濾以.gif,.jpg,.png結(jié)尾的請(qǐng)求并且映射到/data/images/文件夾下面(通過(guò)添加root指令的URI參數(shù)),然后將其他的請(qǐng)求分配給上面配置的代理服務(wù)器。
??為了使新的配置文件生效,發(fā)送relaod信號(hào)給nginx
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/40057.html
摘要:據(jù)統(tǒng)計(jì),截至年月,有商業(yè)網(wǎng)站使用做服務(wù)器或做代理,比如有有一個(gè)主進(jìn)程和幾個(gè)進(jìn)程。主進(jìn)程的作用是讀取并執(zhí)行配置,并維護(hù)進(jìn)程。進(jìn)程是實(shí)際處理請(qǐng)求的進(jìn)程。簡(jiǎn)單指令由指令名參數(shù)組成,指令名和參數(shù)間用空格隔開(kāi),最后以分號(hào)結(jié)束。 本文是官網(wǎng)文檔的入門(mén)學(xué)習(xí)筆記,官網(wǎng)鏈接:Beginner Guide nginx入門(mén) 安裝(centos7) 1) 配置yum源:vi /etc/yum.repos.d/...
摘要:是至今為止見(jiàn)過(guò)最好的入門(mén)文章。采取基于事件的模型和依賴(lài)的機(jī)制,在多個(gè)子進(jìn)程之間高效的分配請(qǐng)求。默認(rèn)情況下,這個(gè)配置文件通常命名為并且會(huì)放置在,,或者。 本文屬于翻譯文章,原文鏈接為 nginx Beginner’s Guide。是至今為止見(jiàn)過(guò)最好的 nginx 入門(mén)文章。額。。。沒(méi)有之一。 這篇教程簡(jiǎn)單介紹了 nginx 并且講解了一些 nginx 可以解決的簡(jiǎn)單任務(wù)。這里,我們假設(shè) ...
閱讀 1317·2021-11-11 10:57
閱讀 3737·2021-09-07 10:10
閱讀 3454·2021-08-03 14:03
閱讀 3081·2019-08-30 13:45
閱讀 695·2019-08-29 11:19
閱讀 1050·2019-08-28 18:07
閱讀 3111·2019-08-26 13:55
閱讀 821·2019-08-26 12:17