Nginx入門指導

2021-07-15 14:59:26 字數 3467 閱讀 6617

這是乙個關於nginx的基本介紹以及你能用它做一些簡單的工作的描述。現在假定你已經把nginx安裝到你的機器上了。如果你還沒有安裝的話,請參考下面這篇文章(

centos環境下安裝nginx)或者nginx的官方安裝指導。通過這個指導,你可以了解到如何啟動、暫停、以及重新啟動nginx,這個指定也會講解配置檔案的結構、如何設定nginx來為外部靜態資源提供服務、如何設定nginx來作為乙個**伺服器,以及怎麼通過乙個fastcgi來連線nginx。

nginx有乙個主程序(master process)和幾個工作程序(worker process)。主程序的主要目的是用來讀取載入配置檔案維護工作程序。工作程序用來處理真正的請求。nginx利用事件驅動模型和基於作業系統的機制在工作程序之間高效的分配請求。工作程序的數量是在配置檔案中定義的(conf/nginx.conf)。它可能是不變也可以調整到空閒的cpu的核心數(最大不超過cpu的)核心數。

./nginx -s signal(訊號) 或者 nginx -s signal(訊號)

訊號(命令)可以是如下幾種:

stop      快速關閉

quit      優雅的關閉

reload    重新啟動

reopen    重新開啟日誌檔案

例如:如果你需要等工作程序處理完當前請求之後再關閉nginx,你可以使用下面這個命令:

./nginx -s quit 或者 nginx -s quit

注意:這個命令需要在啟動nginx的使用者下面執行。

如果你更改了配置檔案的話,你可以通過執行下面這個命令來重啟nginx來使更改生效。

./nginx -s reload 

你也可以用unix的方式來給nginx程序來傳送資訊(命令),例如:殺死程式。在下面的這個例子中,將會直接向給定的程序號傳送訊號

(命令)。通常主程序的程序號被寫在/usr/local/nginx/logs 或者 /var/runn目錄下的nginx.pid這個檔案中。例如:如果主程序的程序號

為1628,優雅退出的命令如下:

kill -s quit 1628

你可以用ps指令來得到所有的正在執行的nginx程序。例如:

ps -ax | grep nginx

更多的訊號(命令資訊)請參考controlling nginx(

配置檔案中的指令指定了nginx包含的模組。這些指令被分為簡單指令和塊指令。乙個簡單指令包含名字和引數,它們之間用空格分隔,並已分號(;)結尾。塊指令擁有和簡單指令相同的結構。不同的是,塊指令需要用{}括起來。如果乙個塊指令中還有其他的帶{}的指令,這個塊指令被稱為乙個上下文。例如events、http、server、location。

任何指令都需要經過慎重考慮之後才能放到main上下文中。events和http指令在main上下文中,server在http的上下文中,location在server的上下文中。#號之後的是重要的一些注釋。

web伺服器的乙個重要任務是為外部檔案(例如:、靜態頁面)提供服務。下面你將會看到這樣乙個例子:在乙個請求中,一些檔案將會從不同的本地目錄(/data/www用來提供靜態html頁面 /data/images包含)中被提供。要想實現這樣的功能,你需要設定配置檔案。在乙個http塊中包含乙個server塊,server塊中包含兩location塊。

首先建立/data/www這樣的乙個目錄,在這個目錄中放乙個index.html檔案,在這個檔案中隨便寫一些內容即可。然後建立乙個/data/images目錄,在這裡面隨便放入一些。

接下來開啟配置檔案,你會發現在配置檔案中有一些預設的server塊的例子。這些大部分都被注釋掉了。現在把所有的這樣的塊都給注釋掉,然後自己新建乙個server塊:

通常,配置檔案中包含幾個server塊,他們用來監聽的不同的埠和不同的服務名。nginx中server處理乙個請求的時候,它將會測試請求的uri是否和server中location的引數是否匹配。下面我們來在server塊中加入乙個location塊。

location /

在這個location塊中,指定帶"/"的字首來和請求中uri來匹配。為了匹配請求檔案,uri將會被新增到根指令上。也就是,會新增到/data/www上。在本地檔案系統中找到請求的檔案。如果這裡存在幾個匹配上的location塊的話,nginx會選擇最精確的那乙個。上面的例子中提供的是最短的字首,它只有乙個字元,只有當所有的其他的location都匹配失敗的時候,才會使用這個location。

接下來我們來寫第二個location塊。

location /images/

它將會匹配以/images/開頭的請求。現在的server塊應該是下面這樣的:

server 

location /images/

}

nginx最常用的乙個用途是作為**伺服器。我們將會配置乙個很基礎的**伺服器,這個伺服器是用來**乙個從本地目錄請求的服務。在這個例子中,你將會看到兩種**方式的運用。

首先,在nginx的配置檔案中新增幾個server塊,內容如下:

server 

}

這個簡單的伺服器監聽8080埠,並且對映所有的請求到/data/up1這個本地目錄下。如果這個目錄不存在的話,請先建立這個目錄,並在這個目錄中放入index.html檔案。請注意:根指令要放到伺服器的上下文中。如果被選中的location中沒有根指令的話,將會使用這個根指令。

接下來,在上面的server塊中的第乙個location塊裡新增proxy_pass指令,這個指令包含協議、host、埠。

server 

location /images/

}

我們可以修改第二個location塊,它原來是對映"/images"開頭的請求到/data/images目錄下。但是這個和我們常規的需求可能不太一樣,所以我們需要這樣修改它:

location ~ \.(gif|jpg|png)$
這是乙個正規表示式,用來匹配所有以.gif、.jps和.png結尾的請求。乙個正規表示式應該以~開頭。現在所有符合的請求將會對映到/data/images這個目錄下面。

當nginx選擇乙個location塊來服務乙個請求的時候,它會先檢查location指令的字首,然後記住最長的乙個字首,然後檢查正規表示式。如果乙個正規表示式匹配上的話,它會選擇這個location,否則的話,它會選擇之前記住的那個。

最後的**伺服器的配置是這樣的:

}這個server將會過濾所有的以.gif、.jpg、和.png結尾的請求,並對映到/data/images這個目錄下。當然,別忘了在根指令下新增uri。其他的請求將通過**伺服器來處理。

安全入門指導

首先給大家看一些安全腦圖,對安全方面有個基本認識和了解,下面三張圖分別是安全技能樹,區塊鏈專案安全和常見web安全常見漏洞。後面我分享了關於安全方面的 社群以及學習 學習方面的書籍,以及安全測試的一些工具和靶場系統,給入門的夥伴全面了解安全,當水平更高可以自己按照方向去學習。安全之路任重道遠,因為攻...

Sencha Touch 入門指導

b sencha touch 入門指導 b 1.介紹sencha touch 是乙個js框架.用於建立在基於觸控裝置的web應用.它使用html,css來提供和本地應用一樣效果的體驗,而不需要外掛程式.2.使用sencha touch url 建立html index.html 引入css ext ...

Redis 入門指導

1 redis簡介 redis 是乙個開源的使用ansi 語言編寫 支援網路 可基於記憶體亦可持久化的日誌型 key value資料庫。2 redis之資料型別 redis支援資料型別包括string list set sorted set和hash。2.1 key 相關命令 exists key ...