1. 程式人生 > >nginx的安裝和核心模組與配置實踐

nginx的安裝和核心模組與配置實踐

1.安裝

安裝環境準備:

(1)linux 核心2.6及以上版本:

只有2.6之後才支援epool ,在此之前使用select或pool多路複用的IO模型,無法解決高併發壓力的問題。通過命令uname -a 即可檢視。

#檢視 linux 核心

uname -a

(2)GCC編譯器

GCC(GNU Compiler Collection)可用來編譯C語言程式。Nginx不會直接提供二進位制可執行程式,只能下載原始碼進行編譯。

(3)PCRE庫

PCRE(Perl Compatible Regular Expressions,Perl相容正則表示式)是由Philip Hazel開發的函式庫,目前為很多軟體所使用,該庫支援正則表示式。

(4)zlib庫

zlib庫用於對HTTP包的內容做gzip格式的壓縮,如果我們在nginx.conf裡配置了gzip on,並指定對於某些型別(content-type)的HTTP響應使用gzip來進行壓縮以減少網路傳輸量。

(5)OpenSSL開發庫

如果我們的伺服器不只是要支援HTTP,還需要在更安全的SSL協議上傳輸HTTP,那麼就需要擁有OpenSSL了。另外,如果我們想使用MD5、SHA1等雜湊函式,那麼也需要安裝它。

上面幾個庫都是Nginx 基礎功能所必需的,為簡單起見我們可以通過yum 命令統一安裝。

#yum 安裝nginx 環境(因為本人已經安裝過了,接不執行下面指令了)

yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel pcre pcre-devel

原始碼獲取:

nginx 下載頁:http://nginx.org/en/download.html 。

# 下載nginx 最新穩定版本

wget http://nginx.org/download/nginx-1.14.0.tar.gz

#解壓

tar -zxvf nginx-1.14.0.tar.gz

最簡單的安裝:(預設安裝的路徑事/usr/local/nginx)

# 全部採用預設安裝

./configure

然後生成一個objs的目錄,裡面存放的都是一些模組原始碼

先前通過./configure 打出來的只是原始碼

我們還需要通過make 來構建的可執行檔案,但現在還沒有安裝到/usr/local/nginx

如果報以下的錯誤就是缺少nginx的安裝環境:

make: *** No rule to make target `build', needed by `default'. Stop.

還需要通過make install把它安裝進/usr/local/nginx

安裝2:前面是直接安裝的沒有指定目錄也沒有新增模組,以下的安裝是基於引數構建

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-debug

然後make命令打出來新的原始碼(原來安裝過的,只要把objs下的nginx替換掉安裝目錄下/usr/local/nginx/sbin/,不過如果這樣子做根據需要的是否對nginx備份,如果沒有安裝的就使用make install)

安裝就到這結束了,很簡單的,只要注意nginx的安裝環境完備就可以了,錯也不怕,直接刪了重灌就好了,Linux中沒有widow中所謂的註冊列表之類的,不對刪了重灌便可。


控制命令:

#預設方式啟動:

./sbin/nginx

訪問nginx curl 127.0.0.1(本地主機的訪問)

或者可以直接通過瀏覽器訪問(直接訪問主機的地址)

#指定配置檔案啟動

./sbing/nginx -c /tmp/nginx.conf

#指定nginx程式目錄啟動

./sbin/nginx -p /usr/local/nginx/

#快速停止

./sbin/nginx -s stop

#優雅停止

./sbin/nginx -s quit

# 熱裝載配置檔案 

./sbin/nginx -s reload

# 重新開啟日誌檔案

./sbin/nginx -s reopen


Nginx 配置與使用

基本配置介紹說明:

(1)監聽埠

語法:listen address:

預設:listen 80;

配置塊:server

(2)主機名稱

語法:server_name name[……];

預設:server_name "";

配置塊:server

server_name後可以跟多個主機名稱,如server_name www.testweb.com、download.testweb.com;。 支援萬用字元與正則

(3)location

語法:location[=|~|~*|^~|@]/uri/{……}

配置塊:server

  1. / 基於uri目錄匹配
  2. =表示把URI作為字串,以便與引數中的uri做完全匹配。
  3. ~表示正則匹配URI時是字母大小寫敏感的。
  4. ~*表示正則匹配URI時忽略字母大小寫問題。
  5. ^~表示正則匹配URI時只需要其前半部分與uri引數匹配即可。

1.配置第一個靜態WEB服務

  1. 建立站點目錄 mkdir -p /usr/www/cym
  2. 編寫靜態檔案

配置 nginx.conf(vim conf/niginx.conf 在nginx的安裝目錄中)

配置server

配置location

index index.html是配置一個預設的頁面

配置完之後可以檢測檔案是否有錯

然後啟動nginx  

 如果nginx本來就啟動的使用熱部署就可以了

然後通過瀏覽器就可以訪問了(簡單說一下本人是使用了域名的轉換的,如www.nginx_test.com,如果沒有應該使用虛擬機器的ip地址訪問)

 如果是報403的

 403是沒有許可權訪問,如果是這樣子,就修改conf/nginx.conf的配置檔案,不要使用預設使用者

2.配置案例

  1. 動靜分離實現

server {

        listen 80;

        server_name www.nginx_test.com *.nginx_test.com ;

        root /usr/www/cym;

        location / {

                index index.html;

        }

        location /static {

         alias /usr/www/static;

        }

 }

基於正則動靜分離

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

      root /usr/www/static;

}

建立靜態站點

配置 location /static(基於目錄動靜分離)

訪問

 基於正則動靜分離:

 訪問

  1. 防盜鏈

# 加入至指定location 即可實現

valid_referers none blocked *.nginx_test.com;

 if ($invalid_referer) {

       return 403;

}

 

  1. 下載限速

下載限速:

location /download {

    limit_rate 1m;

    limit_rate_after 30m;

}

limit_rate :是限速的值。

limit_rate_after:是大於10m的檔案才被限速

  1. IP 黑名單

建立IP黑名單

# 建立黑名單檔案

echo 'deny 255.255.255.255;' >> ip.black

#http 配置塊中引入 黑名單檔案

#http 配置塊中引入 黑名單檔案

include       ip.black;

訪問

3.日誌配置

#基於域名列印日誌

access_log logs/$host.access.log main;

訪問後日志的輸出

 

error日誌的設定

語法:error_log /path/file level;

預設:error_log logs/error.log error;

level是日誌的輸出級別,取值範圍是debug、info、notice、warn、error、crit、alert、emerg,

針對指定的客戶端輸出debug級別的日誌

語法:debug_connection[IP|CIDR]

events {

debug_connection 192.168.0.147; 

debug_connection 10.224.57.0/200;

}