nginx是一款輕量級的網頁伺服器、反向**伺服器。相較於apache、lighttpd具有占有記憶體少,穩定性高等優勢。它最常的用途是提供反向**服務。
安裝在centos下,yum源不提供nginx的安裝,可以通過切換yum源的方法獲取安裝。目前很多像centos7系統已經自帶這幾個庫,所以安裝前可以先檢視一下本地是否已經存在。存在可直接跳至第四步驟。需要使用安裝包編譯安裝的,如下。以下命令均需root許可權執行:
首先安裝必要的庫(nginx 中gzip模組需要 zlib 庫,rewrite模組需要 pcre 庫,ssl 功能需要openssl庫)。選定/usr/local為安裝目錄,以下具體版本號根據實際改變。
1.安裝pcre庫
$ cd /usr/local/
$ sudo wget
$ sudo tar -zxvf pcre-8.36.tar.gz
$ cd pcre-8.36
$ sudo ./configure
$ sudo make
$ sudo make install
2.安裝zlib庫
$ cd /usr/local/
$ sudo wget
$ sudo tar -zxvf zlib-1.2.8.tar.gz
$ cd zlib-1.2.8
$ sudo ./configure
$ sudo make
$ sudo make install
3.安裝ssl
$ cd /usr/local/
$ sudo wget
$ sudo tar -zxvf openssl-1.0.1j.tar.gz
$ sudo ./config
$ sudo make
$ sudo make install
4.安裝nginx
$ cd /usr/local/
$ sudo wget
$ sudo tar -zxvf nginx-1.8.0.tar.gz
$ cd nginx-1.8.0
$ sudo ./configure --prefix=/usr/local/nginx #這一步需要按需要新增編譯引數,如下
$ sudo make
$ sudo make install
如果是使用安裝包編譯的上面幾個依賴,需要在在–prefix後面接以下命令:
–with-pcre=/usr/local/pcre-8.36 指的是pcre-8.36 的原始碼路徑。
–with-zlib=/usr/local/zlib-1.2.8 指的是zlib-1.2.8 的原始碼路徑。
5.啟動
先測試一下配置檔案是否正確:
$ /usr/local/nginx/sbin/nginx -t
無問題可以啟動:
$ /usr/local/nginx/sbin/nginx
檢查是否啟動成功:
開啟瀏覽器訪問此機器的 ip,如果瀏覽器出現 welcome to nginx! 則表示 nginx 已經安裝並執行成功。
部分命令如下:
重啟:$ /usr/local/nginx/sbin/nginx –s reload
停止:$ /usr/local/nginx/sbin/nginx –s stop
測試配置檔案是否正常:
$ /usr/local/nginx/sbin/nginx –t
強制關閉:
$ pkill nginx
配置以上安裝方法nginx的配置檔案位於
/usr/local/nginx/conf/nginx.conf
nginx配置檔案常見結構的從外到內依次是「http」「server」「location」等等,預設的繼承關係是從外到內,也就是說內層塊會自動獲取外層塊的值作為預設值。
server
接收請求的伺服器需要將不同的請求按規則**到不同的後端伺服器上,在 nginx 中我們可以通過構建虛擬主機(server)的概念來將這些不同的服務配置隔離。
server
例如我們筆戈玩下的兩個子專案 passport 和 wan 就可以通過在 nginx 的配置檔案中配置兩個 server,servername 分別為 passport.bigertech.com 和 wan.bigertech.com。這樣的話不同的 url 請求就會對應到 nginx 相應的設定,**到不同的後端伺服器上。
這裡的 listen 指監聽埠,server_name 用來指定ip或網域名稱,多個網域名稱對應統一規則可以空格分開,index 用於設定訪問的預設首頁位址,root 指令用於指定虛擬主機的網頁跟目錄,這個地方可以是相對位址也可以是絕對位址。
通常情況下我們可以在 nginx.conf 中配置多個server,對不同的請求進行設定。就像這樣:
server
server
但是當 server 超過2個時,建議將不同對虛擬主機的配置放在另乙個檔案中,然後通過在主配置檔案 nginx.conf 加上 include 指令包含進來。更便於管理。
include vhosts/*.conf;
就可以把vhosts的檔案都包含進去啦。
localtion
每個 url 請求都會對應的乙個服務,nginx 進行處理**或者是本地的乙個檔案路徑,或者是其他伺服器的乙個服務路徑。而這個路徑的匹配是通過 location 來進行的。我們可以將 server 當做對應乙個網域名稱進行的配置,而 location 是在乙個網域名稱下對更精細的路徑進行配置。
以上面的例子,可以將root和index指令放到乙個location中,那麼只有在匹配到這個location時才會訪問root後的內容:
location /
location 匹配規則
~ 波浪線表示執行乙個正則匹配,區分大小寫
~* 表示執行乙個正則匹配,不區分大小寫
^~ ^~表示普通字元匹配,如果該選項匹配,只匹配該選項,不匹配別的選項,一般用來匹配目錄
= 進行普通字元精確匹配
匹配例子:
請求:/ -> 符合configuration a
/documents/document.html -> 符合configuration b
/images/1.gif -> 符合configuration c
/documents/1.jpg ->符合 configuration d
靜態檔案對映
訪問檔案的配置主要有 root 和 aliasp』s 兩個指令。這兩個指令的區別容易弄混:
alias
alias後跟的指定目錄是準確的,並且末尾必須加 /。
location /c/
如果訪問站點http://location/c訪問的就是/a/目錄下的站點資訊。
root
root後跟的指定目錄是上級目錄,並且該上級目錄下要含有和location後指定名稱的同名目錄才行。
location /c/
這時訪問站點http://location/c訪問的就是/a/c目錄下的站點資訊。
如果你需要將這個目錄展開,在這個location的末尾加上「autoindex on; 」就可以了
**配置起來很簡單比如我要將所有的請求到轉移到真正提供服務的一台機器的 8001 埠,只要這樣:
location /
這樣訪問host時,就都被**到 172.16.1.1的8001埠去了。
負載均衡
upstream myserver;
location /
我們在 upstream 中指定了一組機器,並將這個組命名為 myserver,這樣在 proxypass 中只要將請求轉移到 myserver 這個 upstream 中我們就實現了在四台機器的反向**加負載均衡。其中的 ip_hash 指明了我們均衡的方式是按照使用者的 ip 位址進行分配。另外還有輪詢、指定權重輪詢、fair、url_hash幾種排程演算法。
總結以上是最簡單的通過 nginx 實現靜態檔案**、反向**和負載均衡的配置。在 nginx 中所有的功能都是通過模組來實現的,比如當我們配置 upstream 時是用 upstream 模組,而 server 和 location 是在 http core 模組,其他的還有流控的 limt 模組,郵件的 mail 模組,https 的 ssl 模組。他們的配置都是類似的可以再 nginx 的模組文件中找到詳細的配置說明。
CentOS 安裝配置nginx
yum install nginx通過這個命令就可以安裝nignx了 systemctl start nginxsystemctl status nginx注 nignx預設80埠,下面進行修改埠 改為 server 注 要在伺服器例項 安全組中配置 8084 的規則 注 如果還沒有網域名稱,ser...
centos安裝配置nginx
因為nginx為c 編寫,而且官方提供的為原始碼,我們需要安裝gcc等編譯原始碼進行安裝 安裝環境 yum install gcc pcre devel zlib devel安裝了上面的環境,就可以了,如果編譯的時候還是無法編譯成功,再安裝此依賴 yum install gcc c 如下圖,紅色框中...
CentOS中安裝配置Nginx
然後我們對其就行解壓 解壓完成後我們進入nginx目錄下 然後我們使用.configure命令安裝nginx 安裝過程會遇到如上錯誤,這個錯誤說明我們缺少pcre庫,所以我們必須先安裝pcre庫 安裝成功pcre庫後我們再繼續使用 configure 命令安裝nginx.此時我們又會遇到如下錯誤,下...