首頁  >  文章  >  後端開發  >  nginx學習筆記1 使用nginx建構簡單的HTTP伺服器

nginx學習筆記1 使用nginx建構簡單的HTTP伺服器

WBOY
WBOY原創
2016-07-30 13:31:341254瀏覽

nginx作為輕量級的http伺服器,能夠很好地應付高並發的http請求。同時,它也能被設定為http代理伺服器。身為後台開發的菜鳥,這樣優秀的開源伺服器擺在眼前,總要研究一番,學點東西才可靠啊!

當然,學習nginx的第一步就是學會如何使用它了。

1 安裝nginx

首先,從官網下載源碼http://nginx.org/download/nginx-1.8.0.tar.gz,解壓縮後進入nginx-1.8.0目錄。

nginx依賴pcre函式庫,所以還需要下載pcre原始碼 。

將pcre源碼解壓縮在nginx-1.8.0/3rdparty/pcre-8.32,然後在根目錄下執行

<code>./configure --with-http_ssl_module --with-pcre=./3rdparty/pcre-8.32/
./make
./sudo make install
</code>

即可完成安裝,預設安裝目錄在/usr/local/nginx。
安裝過程中可能會提示缺少openssl函式庫,可以直接apt-get install。

2 配置nginx

在使用nginx之前,先在/home/bookxiao/下創建一個nginx目錄用於存放資源文件,再創建到/usr/local/nginx下conf, sbin以及logs的軟連接,避免頻繁的切換目錄。

<code>bookxiao<span>@ubuntuforfun</span><span>:~/nginx</span><span>$ </span>ls
bin  conf  data  logs</code>

nginx的設定檔位於conf/下,名為nginx.conf。組成設定檔的基本單元是一條的“指令(directives)”,指令由名稱、參數屬性以及結尾的’:’三部分組成。此外,有些指令會被{ }包圍起來,組成一個block;如果block內部包含一些指令,那麼這個block也叫作一個「上下文(context)」。

設定檔裡所有的指令要不是在某個上下文內,就是不被任何上下文包含(即位於主上下文),有點類似C中的全域變數。

例如, 一個簡單的設定檔如下所示:

<code>bookxiao<span>@ubuntuforfun</span><span>:~/nginx/conf</span><span>$ </span>cat nginx.conf
<span>#user  nobody;</span>
worker_processes  <span>1</span>;

events {
    worker_connections  <span>1024</span>;
}

http {
    server {
        listen       <span>80</span>;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }

        location /images {
            root /home/bookxiao/nginx/data;
        }
    }
}</code>

event, http, server都是”context”;指令”worker_processes 1;”位於main context。

要想簡單測試nginx的功能,那麼先來看看如何設定server{}區塊。在nginx中,每個server區塊都表示一個HTTP服務,不同的server有不同的port和server_name。

假設我們現在有一張圖片,存放路徑為~/nginx/data/images/nginx學習筆記1 使用nginx建構簡單的HTTP伺服器.jpg。

現在我們想在瀏覽器裡面輸入http://127.0.0.1/images/nginx學習筆記1 使用nginx建構簡單的HTTP伺服器.jpg,就會這樣:

nginx學習筆記1 使用nginx建構簡單的HTTP伺服器

仔細看一下上面的配置文件,看到有個location的block是這樣定義的:

<code>        location /images {
            root /home/bookxiao/nginx/<span><span>data</span>;</span>
        }</code>

locations後跟的”/images」用來跟客戶端的URL請求作前綴匹配,如果匹配了,那麼就將root的值添加到URL的前端,組成新的URL去文件系統尋找資源檔案。
比如說,這裡原本的URL是”/images/nginx學習筆記1 使用nginx建構簡單的HTTP伺服器.jpg”,那麼最終的URL是”/home/bookxiao/nginx/data/images/nginx學習筆記1 使用nginx建構簡單的HTTP伺服器.jpg」。

如果有多個location都符合某個URL怎麼辦? nginx的策略是選擇最長的匹配值的那個location。

所以,我們可以增加這樣一個server:

<code>    server {
        listen          <span>9999</span>;
        server_name     localhost_test;

        location /images {
            root /home/bookxiao/nginx/<span><span>data</span>/test;</span>
        }
    }</code>

然後執行sudo nginx -s reload重新載入設定檔。然後我們在data/下新建一個test/images/目錄。這樣,我們在瀏覽器中輸入http://127.0.0.1:9999/images/nginx學習筆記1 使用nginx建構簡單的HTTP伺服器.img。那我們就會看到:

nginx學習筆記1 使用nginx建構簡單的HTTP伺服器

版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。

以上就介紹了nginx學習筆記1 使用nginx建立簡單的HTTP伺服器,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn