欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

nginx 基本入門(mén)教程

 更新時(shí)間:2017年04月13日 10:53:33   作者:villainthr  
本篇文章主要介紹了詳解nginx 基本入門(mén),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

這篇教程簡(jiǎn)單介紹了 nginx 并且講解了一些 nginx 可以解決的簡(jiǎn)單任務(wù)。這里,我們假設(shè) nginx 已經(jīng)安裝在讀者的機(jī)器上。如果沒(méi)有,可以看一下如何安裝 nginx。這篇教程主要講解的是如何啟用和停止nginx,和重新加載配置,描述配置文件的基本結(jié)構(gòu)和怎樣搭建一個(gè) nginx 靜態(tài)輔助器,怎樣配置 nginx 作為一個(gè)代理服務(wù)器來(lái)。

nginx 有一個(gè)主進(jìn)程和其他子進(jìn)程。主進(jìn)程的主要工作是加載和執(zhí)行配置文件,并且駐留子進(jìn)程。子進(jìn)程用來(lái)作為實(shí)際的請(qǐng)求處理。nginx 采取基于事件的模型和 OS 依賴的機(jī)制,在多個(gè)子進(jìn)程之間高效的分配請(qǐng)求。子進(jìn)程的個(gè)數(shù)會(huì)直接寫(xiě)在配置文件中并且,對(duì)于給定的配置可以是固定的,或者根據(jù)可用的 CPU 核數(shù)自動(dòng)的進(jìn)行調(diào)整(參考 子進(jìn)程)。

nginx 和它模塊的工作方式是在配置文件中寫(xiě)好的。默認(rèn)情況下,這個(gè)配置文件通常命名為 nginx.conf 并且會(huì)放置在 /usr/local/nginx/conf, /etc/nginx,或者 /usr/local/etc/nginx。

啟用,停止和重載配置

運(yùn)行可執(zhí)行文件就可以開(kāi)啟 nginx,比如:

// -c 為 nginx 的配置文件
nginx -c /usr/local/nginx/conf/nginx.conf

如果,nginx 已經(jīng)開(kāi)啟,那么它就可以通過(guò)使用 -s 參數(shù)的可執(zhí)行命令控制。使用下列格式:

nginx -s signal

signal 可以為下列命令之一:

  1. stop — 直接關(guān)閉 nginx
  2. quit — 會(huì)在處理完當(dāng)前正在的請(qǐng)求后退出,也叫優(yōu)雅關(guān)閉
  3. reload — 重新加載配置文件,相當(dāng)于重啟
  4. reopen — 重新打開(kāi)日志文件

比如,等待當(dāng)前子進(jìn)程處理完正在執(zhí)行的請(qǐng)求后,結(jié)束 nginx 進(jìn)程,可以使用下列命令:

nginx -s quit

執(zhí)行該命令的用戶需要和啟動(dòng)的 nginx 的用戶一致。

如果重載配置文件的命令沒(méi)有傳遞給 nginx 或者 nginx 沒(méi)有重啟,那么配置文件的改動(dòng)是不會(huì)被使用的。重載配置文件的命令可以使用:

nginx -s reload

一旦主進(jìn)程接收到重載配置文件的命令后,它會(huì)先檢查配置文件語(yǔ)法的合法性,如果沒(méi)有錯(cuò)誤,則會(huì)重新加載配置文件。如果成功,則主進(jìn)程會(huì)重新創(chuàng)建一個(gè)子進(jìn)程并且發(fā)送關(guān)閉請(qǐng)求給以前的子進(jìn)程。如果沒(méi)有成功,主進(jìn)程會(huì)回滾改動(dòng)并且繼續(xù)使用以前的配置。老的子進(jìn)程在接受關(guān)閉的命令后,會(huì)停止接受新的請(qǐng)求并且繼續(xù)處理當(dāng)前的請(qǐng)求,直到處理完畢。之后,該子進(jìn)程就直接退出了。

在 Unix 工具的幫助下,比如使用 kill 工具,該信號(hào)會(huì)被發(fā)送給 nginx 進(jìn)程。在這種情況下,信號(hào)會(huì)被直接發(fā)送給帶有進(jìn)程 ID 的進(jìn)程。nginx 的主進(jìn)程的進(jìn)程 ID 是寫(xiě)死在 nginx.pid 文件中的。該文件通常放在 /usr/local/nginx/logs 或者 /var/run 目錄下。比如,如果主進(jìn)程的 ID 是 1628,為了發(fā)送 QUIT 信號(hào)來(lái)使 nginx 優(yōu)雅退出,可以執(zhí)行:

kill -s QUIT 1628

為了得到所有正在運(yùn)行的 nginx 進(jìn)程,我們可能會(huì)使用到 ps 工具,比如,像下列的方式:

$ ps -ax | grep nginx
// 結(jié)果為:(下面是單核 CPU 的情況)
 516 pts/0  D+   0:00 grep --color=auto nginx
 1156 ?    S   1:22 nginx: worker process
27999 ?    Ss   0:00 nginx: master process ./nginx

更多關(guān)于發(fā)送信號(hào)給 nginx,可以參考nginx 控制。

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

nginx 是由一些模塊組成,我們一般在配置文件中使用一些具體的指令來(lái)控制它們。指令被分為簡(jiǎn)單指令和塊級(jí)命令。一個(gè)簡(jiǎn)單的指令是由名字和參數(shù)組成,中間用空格分開(kāi),并以分號(hào)結(jié)尾。例如:

// 簡(jiǎn)單指令
root /data/www;

塊級(jí)指令和簡(jiǎn)單指令一樣有著類似的結(jié)構(gòu),但是末尾不是分號(hào)而是用 { 和 } 大括號(hào)包裹的額外指令集。如果一個(gè)塊級(jí)指令的大括號(hào)里有其他指令,則它被叫做一個(gè)上下文(比如:events,http,server,和 location)。

在配置文件中,沒(méi)有放在任何上下文中的指令都是處在主上下文中。events http 的指令是放在主上下文中,server 放在 http 中, location 放在 server 中。

以 # 開(kāi)頭的行,會(huì)被當(dāng)做注釋。

# this is a comment
events {
 worker_connections 4096; ## Default: 1024
}

http {
  server { 
     listen    80;
     server_name domain1.com www.domain1.com;
     access_log  logs/domain1.access.log main;
     root     html;

     location ~ \.php$ {
      fastcgi_pass  127.0.0.1:1025;
     }
  }
}

靜態(tài)服務(wù)器

一個(gè)重要的網(wǎng)絡(luò)服務(wù)器的任務(wù)是處理文件(比如圖片或者靜態(tài) HTML 文件)。這里,你會(huì)實(shí)踐一個(gè)例子,文件會(huì)從不同的目錄中映射(取決于請(qǐng)求): /data/www(放置 HTML 文件)和 /data/images(放置圖片)。這需要配置一下文件,將帶有兩個(gè) location 的指令的 server 的塊級(jí)命令放在 server 指令中。

首先,創(chuàng)建一個(gè) /data/www 目錄,然后放置一個(gè)事先寫(xiě)好內(nèi)容的 index.html 文件。接著,創(chuàng)建一個(gè) /data/images 目錄,然后放置一些圖片。

下一步,打開(kāi)配置文件。默認(rèn)的配置文件已經(jīng)包含了一些關(guān)于 server 指令的樣式,大多數(shù)情況下直接把他們給注釋掉?,F(xiàn)在,注釋掉其他的區(qū)塊,然后寫(xiě)一個(gè)新的 server 區(qū)塊:

http {
  server {
  }
}

通常,該配置文件可能會(huì)包含多個(gè) server 指令。這些 server 指令監(jiān)聽(tīng)不同的端口和服務(wù)器名。一旦 nginx 決定哪個(gè)服務(wù)進(jìn)程處理請(qǐng)求,它會(huì)根據(jù)在 server 塊級(jí)指令中定義好的 location 指令的參數(shù),來(lái)匹配請(qǐng)求頭中指定的 URI。

將下列 location 指令添加到 server 指令中:

location / {
  root /data/www;
}

location 指令相對(duì)于請(qǐng)求中的 URI 執(zhí)行了 “/” 的前綴。為了匹配請(qǐng)求,URI 會(huì)被添加到 root 命令指定的路徑后,即 /data/www,得到本地文件系統(tǒng)中請(qǐng)求文件的路徑。如果,有幾個(gè) location 匹配到,那么 nginx 會(huì)選擇最長(zhǎng)的前綴。上面的 location 提供了長(zhǎng)度為 1 的前綴,所以,僅當(dāng)其他的 location 匹配失敗后,該指令才會(huì)使用。

接著,添加第二個(gè) location 區(qū)塊:

location /images/ {
  root /data;
}

它會(huì)匹配到以 /images/ 開(kāi)頭的請(qǐng)求(location / 也會(huì)匹配到該請(qǐng)求,只是前綴更短)

server 塊級(jí)命令的配置結(jié)果如下:

server {
  location / {
    root /data/www;
  }

  location /images/ {
    root /data;
  }
}

這已經(jīng)是一個(gè)可用的服務(wù)器配置,它監(jiān)聽(tīng)標(biāo)準(zhǔn)的 80 端口并且可以在本地上通過(guò) http://localhost/ 訪問(wèn)。對(duì)于 URI 以 /images/ 開(kāi)頭的請(qǐng)求,服務(wù)器會(huì)從 /data/images 目錄中,返回對(duì)應(yīng)的文件。例如,nginx 會(huì)返回 /data/images/example.png 文件,當(dāng)接收到 http://localhost/images/example.png 的請(qǐng)求響應(yīng)時(shí)。如果該文件不存在,nginx 會(huì)返回一個(gè) 404 錯(cuò)誤的響應(yīng)。沒(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 文件。

為了使用新的配置文件,如果還沒(méi)開(kāi)啟 nginx 需要先開(kāi)啟,然后將重載信號(hào)發(fā)送給 nginx 的主進(jìn)程,通過(guò)執(zhí)行:

nginx -s reload

如果你發(fā)現(xiàn)有些地方出了問(wèn)題,你可以在 /usr/local/nginx/logs 或者 /var/log/nginx 目錄下的 access.log error.log 文件中,找到原因。

搭建一個(gè)簡(jiǎn)易的代理服務(wù)

nginx 常常用來(lái)作為代理服務(wù)器,這代表著服務(wù)器接收請(qǐng)求,然后將它們傳遞給被代理服務(wù)器,得到請(qǐng)求的響應(yīng),再將它們發(fā)送給客戶端。

我們將配置一個(gè)基本的代理服務(wù)器,它會(huì)處理本地圖片文件的請(qǐng)求并返回其他的請(qǐng)求給被代理的服務(wù)器。在這個(gè)例子中,兩個(gè)服務(wù)器都會(huì)定義在一個(gè) nginx 實(shí)例中。

首先,通過(guò)在 nginx 配置文件中添加另一個(gè) server 區(qū)塊,來(lái)定義一個(gè)被代理的服務(wù)器,像下面的配置:

server {
  listen 8080;
  root /data/up1;

  location / {
  }
}

上面就是一個(gè)簡(jiǎn)單的服務(wù)器,它監(jiān)聽(tīng)在 8080 端口(之前,listen 并沒(méi)被定義,是因?yàn)槟J(rèn)監(jiān)聽(tīng)的 80 端口)并且會(huì)映射所有的請(qǐng)求給 本地文件目錄 /data/up1。創(chuàng)建該目錄,然后添加 index.html 文件。注意,root 指令是放在 server 上下文中。當(dāng)響應(yīng)請(qǐng)求的 location 區(qū)塊中,沒(méi)有自己的 root 指令,上述的 root 指令才會(huì)被使用。

接著,使用前面章節(jié)中的 server 配置,然后將它改為一個(gè)代理服務(wù)配置。在第一個(gè) location 區(qū)塊中,放置已經(jīng)添加被代理服務(wù)器的協(xié)議,名字和端口等參數(shù)的 proxy_pass 指令(在這里,就是 http://localhost:8080):

server {
  location / {
    proxy_pass http://localhost:8080;
  }

  location /images/ {
    root /data;
  }
}

我們將修改第二個(gè) location 區(qū)塊,使他返回一些典型后綴的圖片文件請(qǐng)求,現(xiàn)在它只會(huì)映射帶有 /images/ 前綴的請(qǐng)求到 /data/images 目錄下。修改后的 location 指令如下:

location ~ \.(gif|jpg|png)$ {
  root /data/images;
}

該參數(shù)是一個(gè)正則表達(dá)式,它會(huì)匹配所有以 .gif .jpg 或者 .png 結(jié)尾的 URIs。一個(gè)正則表達(dá)式需要以 ~ 開(kāi)頭。匹配到的請(qǐng)求會(huì)被映射到 /data/images 目錄下。

當(dāng) nginx 在選擇 location 去響應(yīng)一個(gè)請(qǐng)求時(shí),它會(huì)先檢測(cè)帶有前綴的 location 指令,記住先是檢測(cè)帶有最長(zhǎng)前綴的 location,然后檢測(cè)正則表達(dá)式。如果有一個(gè)正則的匹配的規(guī)則,nginx 會(huì)選擇該 location,否則,會(huì)選擇之前緩存的規(guī)則。

最終,一個(gè)代理服務(wù)器的配置結(jié)果如下:

server {
  location / {
    proxy_pass http://localhost:8080/;
  }

  location ~ \.(gif|jpg|png)$ {
    root /data/images;
  }
}

該服務(wù)器會(huì)選擇以 .gif.jpg,或者 .png 結(jié)束的請(qǐng)求并且映射到 /data/images 目錄(通過(guò)添加 URI 給 root 指令的參數(shù)),接著將其他所有的請(qǐng)求映射到上述被代理的服務(wù)器。

為了使用新的配置,像前幾個(gè)章節(jié)描述的一樣,需要向 nginx 發(fā)送重載信號(hào)。

這還有很多其他的指令,可以用于進(jìn)一步配置代理連接。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • nginx實(shí)現(xiàn)反向代理出現(xiàn)502的問(wèn)題解決

    nginx實(shí)現(xiàn)反向代理出現(xiàn)502的問(wèn)題解決

    本文主要介紹了nginx實(shí)現(xiàn)反向代理出現(xiàn)502的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • Waiting for server respnse耗時(shí)過(guò)長(zhǎng)原因排查及解決

    Waiting for server respnse耗時(shí)過(guò)長(zhǎng)原因排查及解決

    這篇文章主要給大家介紹了關(guān)于Waiting for server respnse耗時(shí)過(guò)長(zhǎng)原因排查及解決的相關(guān)資料,文中將解決的辦法介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-05-05
  • Nginx負(fù)載均衡中的Memcached緩存模塊

    Nginx負(fù)載均衡中的Memcached緩存模塊

    Nginx?的?ngx_http_memcached_module?模塊本身并沒(méi)有提供緩存功能,它只是一個(gè)將用戶請(qǐng)求轉(zhuǎn)發(fā)到?Memcached?服務(wù)器的代理模塊,這篇文章主要介紹了Nginx負(fù)載均衡之Memcached緩存模塊,需要的朋友可以參考下
    2024-06-06
  • nginx屏蔽指定接口(URL)的操作方式

    nginx屏蔽指定接口(URL)的操作方式

    這篇文章主要介紹了nginx屏蔽指定接口(URL)的操作方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • 如何使用Nginx和uwsgi在自己的服務(wù)器上部署python的flask項(xiàng)目

    如何使用Nginx和uwsgi在自己的服務(wù)器上部署python的flask項(xiàng)目

    Nginx 是一個(gè)高性能的 HTTP 和反向代理服務(wù),其特點(diǎn)是占有內(nèi)存少,并發(fā)能力強(qiáng),事實(shí)上nginx的并發(fā)能力在同類型的網(wǎng)頁(yè)服務(wù)器中表現(xiàn)較好,這篇文章主要介紹了如何使用Nginx和uwsgi在自己的服務(wù)器上部署python的flask項(xiàng)目,需要的朋友可以參考下
    2023-11-11
  • Nginx proxy_set_header參數(shù)設(shè)置

    Nginx proxy_set_header參數(shù)設(shè)置

    本文主要介紹了Nginx proxy_set_header參數(shù)設(shè)置,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-09-09
  • Nginx代理Partainer的具體使用

    Nginx代理Partainer的具體使用

    本文主要介紹了Nginx代理Partainer的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • nginx訪問(wèn)動(dòng)態(tài)接口報(bào)錯(cuò)404Not Found問(wèn)題解決

    nginx訪問(wèn)動(dòng)態(tài)接口報(bào)錯(cuò)404Not Found問(wèn)題解決

    本文主要介紹了nginx訪問(wèn)動(dòng)態(tài)接口報(bào)錯(cuò)404Not Found問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Nginx反向代理入門(mén)實(shí)戰(zhàn)指南

    Nginx反向代理入門(mén)實(shí)戰(zhàn)指南

    反向代理:反向代理也叫reverse proxy,指的是代理外網(wǎng)用戶的請(qǐng)求到內(nèi)部的指定web服務(wù)器,并將數(shù)據(jù)返回給用戶的一種方式,這是用的比較多的一種方式,下面這篇文章主要給大家介紹了關(guān)于Nginx反向代理的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • nginx超時(shí)設(shè)置詳細(xì)介紹

    nginx超時(shí)設(shè)置詳細(xì)介紹

    這篇文章主要介紹了nginx超時(shí)設(shè)置詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-05-05

最新評(píng)論