日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Nginx >内容正文

Nginx

nginx指定配置文件启动_【第1717期】Nginx入门指南

發(fā)布時(shí)間:2023/12/10 Nginx 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nginx指定配置文件启动_【第1717期】Nginx入门指南 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

Nginx有在部署早讀課網(wǎng)站的時(shí)候用到,平時(shí)用的不多,又是一個(gè)可以順便了解的知識(shí)點(diǎn)。那個(gè)@李曉云,這篇是你想了解的嗎?今日早讀文章由@慕小白翻譯分享。

正文從這開(kāi)始~~

這份指南是對(duì)nginx的基本介紹,描述了用戶借助nginx可以實(shí)現(xiàn)的一些簡(jiǎn)單任務(wù)。只支持運(yùn)行在已經(jīng)安裝了nginx的讀者機(jī)器上;如果沒(méi)有安裝,請(qǐng)參考Installing nginx 頁(yè)面。這份指南描述了怎樣啟動(dòng)和停止nginx以及重新加載配置,說(shuō)明了配置文件的結(jié)構(gòu)以及如何啟動(dòng)nginx以輸出靜態(tài)內(nèi)容,怎樣設(shè)置代理服務(wù)器 和怎樣連接FastCGI應(yīng)用。

nginx有一個(gè)主進(jìn)程和幾個(gè)工作進(jìn)程。主進(jìn)程的主要目的是為了讀取和評(píng)估配置并且維護(hù)工作進(jìn)程。工作進(jìn)程處理實(shí)際請(qǐng)求。nginx在工作進(jìn)程中采用事件驅(qū)動(dòng)模型和OS依賴機(jī)制有效分配請(qǐng)求。工作進(jìn)程的數(shù)量取決于配置文件中定義的固定值或者是通過(guò)有效的CPU核數(shù)自動(dòng)判定數(shù)量。工作進(jìn)程的數(shù)量在配置文件中定義,可據(jù)給定的配置對(duì)工作進(jìn)程的數(shù)量進(jìn)行固定,也可以根據(jù)可用CPU內(nèi)核的數(shù)量進(jìn)行自動(dòng)調(diào)整。(參看 worker_processes).

nginx及其各模塊的工作方式取決于配置文件。默認(rèn)情況下,配置文件名為nginx.conf,并放置在/usr/local/nginx/conf、/etc/nginx或/usr/local/etc/nginx.目錄中。

啟動(dòng), 停止, 和重新加載配置文件

啟動(dòng)的時(shí)候直接運(yùn)行nginx.exe或者nginx。如果nginx已經(jīng)啟動(dòng),就可以直接使用參數(shù)-s 來(lái)進(jìn)行調(diào)用執(zhí)行,具體的使用語(yǔ)法如下:

nginx -s signal

signal 的位置可以是如下參數(shù):

  • stop —指令一經(jīng)發(fā)出,直接停止

  • quit — 等待所有的請(qǐng)求完成,再停止

  • reload — 重新加載配置文件nginx.conf

  • reopen —重新打開(kāi)日志文件

例如,想要停止nginx進(jìn)程,(等待當(dāng)前所有的請(qǐng)求進(jìn)程全部完成),可以使用如下命令:

nginx -s quit

注:此命令應(yīng)在啟動(dòng)nginx的同一用戶下執(zhí)行。

reload或重啟nginx,修改的配置文件才會(huì)被應(yīng)用。為了重新加載配置,執(zhí)行如下命令:

nginx -s reload

一旦主進(jìn)程收到reload的信號(hào),它就會(huì)檢查新的配置文件語(yǔ)法,并且嘗試應(yīng)用這個(gè)新的配置文件。如果執(zhí)行成功,主進(jìn)程會(huì)啟用一個(gè)新的工作進(jìn)程,然后給原來(lái)工作進(jìn)程發(fā)送一個(gè)信號(hào),讓它原來(lái)的工作進(jìn)程停止。如果執(zhí)行失敗,主進(jìn)程會(huì)回滾到原來(lái)的配置文件并繼續(xù)使用原來(lái)的配置文件進(jìn)行執(zhí)行。原來(lái)的工作進(jìn)程接收到停止命令之后,它會(huì)停止新的連接請(qǐng)求,但是當(dāng)前已經(jīng)建立的連接請(qǐng)求會(huì)等待其完成后終止。之后舊進(jìn)程就會(huì)退出。

可以借助Unix工具(如kill實(shí)用程序)將信號(hào)發(fā)送到nginx進(jìn)程。在這種情況下,信號(hào)直接發(fā)送到具有給定進(jìn)程ID的進(jìn)程。這個(gè)進(jìn)程ID就是nginx的主進(jìn)程標(biāo)記,同時(shí)這個(gè)進(jìn)程ID會(huì)被默認(rèn)寫(xiě)入到文件夾/usr/local/nginx/logs或者/var/run下面。例如:如果主進(jìn)程ID是1628,就發(fā)送指令QUIT來(lái)正常停止nginx,執(zhí)行下面命令:

kill -s QUIT 1628

為了得到正在運(yùn)行的ngixn進(jìn)程列表,可以通過(guò)ps指令得到:

ps -ax | grep nginx

獲取更多nginx信號(hào)信息,參考 Controlling nginx.

配置文件結(jié)構(gòu)

nginx由模塊組成,這些模塊由配置文件中指定的指令控制。指令分為簡(jiǎn)單指令和塊指令。一個(gè)簡(jiǎn)單的指令由名稱和參數(shù)組成,這些名稱和參數(shù)由空格分隔,并以分號(hào)(;)結(jié)尾。塊指令具有與簡(jiǎn)單指令相同的結(jié)構(gòu),但它的結(jié)尾不是分號(hào),而是一組由大括號(hào)({、})包圍的附加指令。如果一個(gè)塊指令在大括號(hào)中包含其他指令,則這個(gè)塊指令又叫做上下文 (例如: events, http, server, 和location).

放在任何上下文之外的配置文件中的指令被認(rèn)為是在主上下文 中。event和http指令駐留在主上下文中,server駐留在http中,location駐留在server中。

一行中在#符號(hào)后面的是注釋

提供靜態(tài)資源內(nèi)容

web服務(wù)器最重要的任務(wù)是對(duì)外提供文件,例如(圖片或者靜態(tài)HTML網(wǎng)頁(yè))。示例:不同的請(qǐng)求會(huì)響應(yīng)到不同的文件夾路徑: /data/www(包含靜態(tài)HTML文件) /data/images (包含圖片)。此過(guò)程需要編輯配置文件,并在附有兩個(gè)location塊的http塊中設(shè)置server塊。參考:server指令 http指令 location 指令

首先,創(chuàng)建一個(gè)文件夾/data/www 把有內(nèi)容的index.html 文件放到里面。并且創(chuàng)建/data/images文件夾,在里面放一些圖片。

第二步,打開(kāi)配置文件。默認(rèn)的配置文件已經(jīng)包含了幾個(gè)server塊指令,但是被注釋了,現(xiàn)在把這些server塊指令放開(kāi)注釋。

http {

server {

}

}

通常,配置文件包含幾個(gè)server塊指令,這些塊指令通過(guò)不同的服務(wù)名字(server names)分發(fā)監(jiān)聽(tīng)(distinguished listen)在不同的端口。一旦nginx決定哪個(gè)服務(wù)器處理請(qǐng)求,它就會(huì)根據(jù)server塊指令中定義的location指令的參數(shù)匹配請(qǐng)求頭中指定的URI。

在server塊指令中添加location指令:

location / {

root /data/www;

}

這個(gè)location塊詳述了與URI請(qǐng)求相匹配的“/”前綴。如果匹配到請(qǐng)求,這個(gè) URI 會(huì)被轉(zhuǎn)到 root 指令的路徑。,也就是說(shuō),所有請(qǐng)求文件都會(huì)直接請(qǐng)求到本地文件系統(tǒng)的/data/www路徑。如果有多個(gè)匹配的location塊,nginx會(huì)選擇最長(zhǎng)前綴的那個(gè)。上面提供的location塊是長(zhǎng)度只有1的最短前綴,因此,其它所有的location塊都匹配失敗的話,這個(gè)location塊指令才會(huì)被使用。

下一步,添加第二個(gè)location塊:

location /images/ {

root /data;

}

這個(gè)會(huì)匹配以/images開(kāi)頭的請(qǐng)求(/也會(huì)匹配請(qǐng)求,只不過(guò)這個(gè)前綴更短)。

server塊指令配置結(jié)果如下:

server {

location / {

root /data/www;

}

location /images/ {

root /data;

}

}

一個(gè)正常的服務(wù)器配置文件監(jiān)聽(tīng)在80端口上,并且可以在本機(jī)上成功訪問(wèn)http://localhost/。以/images/開(kāi)頭請(qǐng)求的URI地址,服務(wù)器會(huì)從/data/images文件夾下面返回對(duì)應(yīng)的文件。例如,請(qǐng)求/data/images/example.png這個(gè)文件,nginx服務(wù)器會(huì)返回http://localhost/images/example.png。如果服務(wù)器沒(méi)有這個(gè)文件會(huì)返回404 錯(cuò)誤。不是以/images/開(kāi)頭的請(qǐng)求,就會(huì)被映射到/data/www 文件夾。例如, 請(qǐng)求nginx/data/www/some/example.html,服務(wù)器會(huì)響應(yīng)http://localhost/some/example.html 這個(gè)文件。

為了應(yīng)用一個(gè)新的配置文件,如果nginx還沒(méi)有啟動(dòng),就直接啟動(dòng)nginx服務(wù)器,如果已經(jīng)啟動(dòng),直接使用下面指令發(fā)送到nginx的主進(jìn)程中,如下: 如果nginx尚未啟動(dòng),則啟動(dòng)nginx,或者向nginx的主進(jìn)程發(fā)送重新加載信號(hào),執(zhí)行:

nginx -s reload

一些情況下( ***),沒(méi)有達(dá)到預(yù)期的效果,你可以嘗試通過(guò)查看access.log和 error.log (通常在/usr/local/nginx/logs或者/var/log/nginx) 日志文件來(lái)找原因。

設(shè)置一個(gè)簡(jiǎn)單的代理服務(wù)器

使用最頻繁的是設(shè)置一個(gè)代理服務(wù)器,也即接受請(qǐng)求,并把所有的請(qǐng)求轉(zhuǎn)到被代理的服務(wù)器上,獲取到響應(yīng)之后再發(fā)送到客戶端。

我們能配置一個(gè)基本的代理服務(wù)器,它的 ***圖片文件請(qǐng)求和其它的全部請(qǐng)求都會(huì)被發(fā)送到代理服務(wù)器上。本例中,兩個(gè)服務(wù)器定義在一個(gè)nginx實(shí)例。

首先,通過(guò)在配置文件中添加server塊指令的方式來(lái)定義一個(gè)代理服務(wù)器。

server {

listen 8080;

root /data/up1;

location / {

}

}

這個(gè)簡(jiǎn)單的服務(wù)器會(huì)監(jiān)聽(tīng)8080端口(之前, 由于使用了標(biāo)準(zhǔn)端口80,因此尚未指定listen指令)并且映射所有的請(qǐng)求到本地文件系統(tǒng)的/data/up1文件夾。創(chuàng)建這個(gè)文件夾并放一個(gè)文件index.html。需要注意的是 server上下文就是這個(gè)根指令的位置。例如 當(dāng)選擇用于提供請(qǐng)求的location塊指令不包括根指令時(shí),使用這樣的根指令(root /data/up1)。

接下來(lái),使用上一節(jié)中的服務(wù)器配置,并將其修改為代理服務(wù)器配置。在第一個(gè)位置塊中,使用參數(shù)中指定的代理服務(wù)器的協(xié)議、名稱和端口(在我們的示例中,它是[http://localhost:8080)放置proxy](http://localhost:8080)放置proxy_pass指令:

server {

location / {

proxy_pass http://localhost:8080;

}

location /images/ {

root /data;

}

}

我們修改第二個(gè)location指令塊,這個(gè)指令塊會(huì)把當(dāng)前的/images前綴請(qǐng)求映射到/data/images文件夾中,為了匹配更多的圖片類型請(qǐng)求,location塊指令修改如下:

location ~ \.(gif|jpg|png)$ {

root /data/images;

}

使用正則表達(dá)式~來(lái)匹配所有以 .gif, .jpg, 和.png結(jié)尾的URIs,響應(yīng)的請(qǐng)求會(huì)被映射到/data/images文件夾中。

nginx在匹配location請(qǐng)求的時(shí)候,首先檢查location 指令的特殊前綴,最長(zhǎng)前綴(),最后檢查正則。如果這個(gè)請(qǐng)求匹配到正則,ngixn會(huì)選中這個(gè)location,否則,會(huì)跳過(guò)找到最前的一個(gè)()。

代理服務(wù)器的配置結(jié)果看起來(lái)就是這樣子:

server {

location / {

proxy_pass http://localhost:8080/;

}

location ~ \.(gif|jpg|png)$ {

root /data/images;

}

}

這個(gè)服務(wù)器將會(huì)過(guò)濾后綴為 .gif, .jpg, 或者 .png 的然后分發(fā)到/data/images文件夾(通過(guò)在root中添加URI參數(shù)) ,并且其它的請(qǐng)求會(huì)被代理到上面的server配置()中http://localhost:8080/。

為了使用最新的配置,就像前面一樣,向nginx發(fā)送一個(gè)reload信號(hào)。

這里有更多的 more 指令可以使用在代理連接配置中。

啟用 FastCGI 代理

nginx也能把請(qǐng)求路由到FastCGI服務(wù)上,它運(yùn)行程序使用各種框架和編程語(yǔ)言(如PHP)。

使用FastCGI服務(wù)器的最基本的nginx配置包括使用fastcgipass 指令而不是proxypass指令,以及fastcgiparam指令來(lái)設(shè)置傳遞給FastCGI服務(wù)器的參數(shù)。假設(shè)FastCGI服務(wù)在localhost:9000可以訪問(wèn),以上面一部分的配置為基礎(chǔ),替換proxypass指令為fastcgipass,并且修改參數(shù)為 localhost:9000。在PHP中, SCRIPTFILENAME參數(shù)為定義的腳本名稱 QUERY_STRING參數(shù)為被請(qǐng)求的參數(shù)**,最終的配置如下:

server {

location / {

fastcgi_pass localhost:9000;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

fastcgi_param QUERY_STRING $query_string;

}

location ~ \.(gif|jpg|png)$ {

root /data/images;

}

}

這個(gè)服務(wù)器設(shè)置會(huì)路由所有除了靜態(tài)圖片的請(qǐng)求,通過(guò)FastCGI協(xié)議代理到localhost:9090代理服務(wù)器上。

關(guān)于本文 譯者:@慕小白 譯文:https://www.zcfy.cc/article/nginx-beginner-s-guide 原文:http://nginx.org/en/docs/beginners_guide.html

為你推薦

【第408期】Nginx能為前端開(kāi)發(fā)帶來(lái)什么?

【第1529期】GraphQL入門指南

【第1291期】Puppeteer入門簡(jiǎn)介

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的nginx指定配置文件启动_【第1717期】Nginx入门指南的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。