天天看點

Nginx

1.查找安裝路徑

whereis nginx

2.檢查配置檔案nginx.conf 是否正确

./nginx –t

3.啟動、停止nginx

cd /usr/local/nginx/sbin/

./nginx

./nginx -s stop

./nginx -s quit

./nginx -s reload

./nginx -s quit    # 此方式停止步驟是待nginx程序處理任務完畢進行停止。

./nginx -s stop    # 此方式相當于先查出nginx程序id再使用kill指令強制殺掉程序。

4.查詢nginx程序:

ps aux|grep nginx

5.重新加載配置檔案

6.配置nginx.conf

#======================以下是全局配置項

#指定運作 Nginx 的使用者和使用者組 ,

#預設情況下該選項關閉(關閉的情況下使用的使用者就是 nobody)

#user nobody nobody ;

#表示作業系統啟動多少個工作程序運作 Nginx

worker processes 1 ;

#Nginx 運作錯誤的日志存放位置。當然你還可以指定錯誤級别

#error log logs/error.log ;

#error_log logs/error.log notice ;

#error_log logs/error.log info ;

#指定主程序 id 檔案的存放位置,雖然 worker processes != 1 的情況下, 會有很多程序 , 管理程序卻隻有一個

#pid logs/nginx.pid;

events {

     #指單個工作程序可以允許同時建立外部連接配接的數量, 無論這個連接配接是 Nginx 外部建立的,還是 Nginx 内部建立的

     worker connections 1024 ;

     #連接配接使用的網絡工/ 0 模型,

     #可以采用[ kqueue rtsig epoll select poll  eventport ]  

    use epoll ;

}

http {

     #===============以下是 Nginx 後端服務配置項

     upstream backendserverl {

         #Nginx 向後端伺服器配置設定請求任務 的方式 , 預設為輪詢,如果指定了ip hash ,就是 Hash 算法

         #ip hash

         #後端伺服器 ip : port , 如果有多個服務節點 , 這裡就配置多個

        server 192.168.220.131:8080 ;

         server 192.168.220.132:8080 ;

         #backup 表示,這是一個備份節點 , 隻有當所有節點失效後

         #Nginx 才會往這個節點配置設定請求任務

         #server 192.168.220.133:8080 backup ;

         #weight , 固定權重 , 還記得我們上文提到 的權重輪詢方式吧

         #server 192.168.220.134:8080 weight=100;

     }

# =========================以下是 HTTP 協定主配置

#安裝 Nginx 後,在 conf 目錄下除了 nginx.conf 主配置檔案,還有很多模闆配置檔案 ,

#這裡就是導入這些模闆檔案

include mime .types ;

#HTTP 核心子產品指令,這裡設定預設類型為二進制流,也就是當檔案類型未定義時使用這種方式

default_type application/octet-stream;

#日志格式

#log_format main '$remote_addr - $remote_user [$time_local] "$request" ’  '$status $body_bytes_sent "$http_referer" '  '"$http_user_agent"  "$http_x_forwarded_for"';

#日志檔案存放的位置

#access log logs/access.log main ;

#sendfile 規則開啟

sendfile on ·

#指定一個連接配接的等待時間(機關秒),如果超過等待時間,則連接配接就會斷掉 。注意一定要設定,否則高并發情況下會産生性能問題

keepalive_timeout 65 ;

#開啟資料壓縮,後文詳細介紹

gzip on;

#==========================以下是一個服務執行個體的配置

server {

     #這個代理執行個體的監聽端口

    listen 80 ;

     #server_name 取個唯一的執行個體名都要想半天?

     server_name localhost ;

     #編碼格式

     charset utf-8 ;

     #access log logs/host.access.log main;

     #location 将按照規則分流滿足條件的 URL o

     #” location /”你可以了解為“預設分流位置” 。

     location / {

             #root 目錄,這個 html 表示 Nginx 主安裝目錄下的“ html ”目錄 。

             root html ;

             #目錄中的預設展示頁面

             index index.html index.htm;

             #location 支援正規表達式, “~” 表示比對正規表達式

             location ~ ^/business/ {

                 #方向代理。後文詳細講解

                 proxy_pass http://backendserverl;

                 #redirect server error pages to the static page / 50x.html

                 #errorpage 404 /404 . html;

                 error_page 500 502 503 504 /50x.html ;

                 location = /50x.html {

                     root html;

                 }

             }

7.常用子產品

1)gzip 壓縮子產品

#開啟 gzip 壓縮服務

gzip on ;

#gzip 壓縮需要申請|臨時記憶體空間,假設前提是壓縮後大小是小子等于壓縮前的。例如,如果原始檔案大小為 10KB ,那麼它超過了 8KB,是以配置設定的記憶體是 8 × 2 = 16KB;再例如,原始檔案大小為 18KB,很明顯 16KB 也是不夠的,那麼按照 8x2x2 = 32KB 的大小申請記憶體。如果沒有設定,則預設值是申請跟原始資料相同大小的記憶體空間去存儲 gzip 壓縮結果

gzip_buffers 2 8K ;

#進行壓縮的原始檔案的最小值,也就是說如果原始檔案小子 SKB,那麼就不會進行壓縮了

gzip_min_length 5K;

#gzip 壓縮基子的 HTTP 協定版本,預設就是 HTTP 1.1

gzip_http_version 1.1;

# gzip 壓縮級别 l~ 9 ,級别越高壓縮率越大,壓縮時間也就越長, CPU 越高

gzip_comp_level 5;

#需要進行 gzip 壓縮的 Content-Type 的 Header 的類型。建議 JS 、 TEXT 、 css 、 XML, JSON

#格式都要進行壓縮:圖檔就沒必要了, GIF 、 JPGE 檔案已經壓縮得很好了 , 就算再壓縮,效果也不好,而且還耗費 CPU 。

gzip_types text/HTML text/plain application/x-javascript text/css application/xml;

2)rewrite 子產品

Nginx 的強大在于其對URL請求的(應用正規表達式)重寫(重定位),這就是 rewrite 功能子產品的作用 。Nginx 的 rewrite 功能子產品依賴于 PCRE Lib

~      區分大小寫進行正規表達式比對

~*     不區分大小寫進行正規表達式比對

!~     區分大小寫進行正規表達式不比對

!~*    不區分大小寫進行正規表達式不比對

如: location ~*  \.(jpg|gif|png|ioc|jpeg)$

Nginx 中的全局變量

• $content_length:擷取 request 中 header 部分的“ Content_Length ”值 。

• $content_type : 擷取 request 中 header 部分的“ Content_type ”值。

• $request_method : 請求方式,常用的有兩種請求方式: POST 、 GET 。

• $remote addr : 發送請求的用戶端 IP 。

• $remote_port:發送請求的用戶端端口。

• $request_uri : 含有參數的完整的初始 URI 。

• $server_addr: request 到達的 server 的 IP 。

• $server_port : 請求到達的伺服器的端口号 。

rewrite 文法

rewrite regex replacement flag

flag關鍵字

• redirect:通知用戶端重定 向到 rewrtie 後面的位址 。

• permanent:通知用戶端永久重定向到 rewrtie 後面的位址 。

• last : 将rewrite 後的位址重新在 server 标簽中執行。

• break : 将rewrite 後的位址重新在目前的 location 标簽中執行 。

3)nginx upstream_check_module健康檢查子產品

4) image_filter圖檔動态縮略子產品

#不區分大小寫進行正規表達式比對

#隻要滿足以下表達式的請求路徑,則進行圖檔動态縮略閣的生成

location ~* /(.+)\.(jpg|gif|png|ioc|jpeg)_(\d+)_(\d+)$ {

     #将以上正規表達式第 3 個區域設定的數值傳入變量“ w ”

     set $w $3;

     #将以上正規表達式第 4 個區域設定的數值傳入變量“ h”

    set $h $4;

     #将 rewrite 後的位址重新在目前的 location 标簽執行,以便找到原始圖檔

     rewrite /(.+)\.(jpg|gif|png|ioc|jpeg)_(\d+)_(\d+)$ /$1.$2 break;

     #按照寬度 w 和高度 h,将原始圖檔進行等比例縮放

     image filter resize $w $h;

     #設定單張原始圖檔的最大值為 lOMB

     image_filter_buffer 10M;

     #設定圖檔所在的根目錄

    root /home/nodejs/BDK/public/upload/;

上一篇: 插入預設值
下一篇: Nginx

繼續閱讀