nginx 安裝、配置與備份

一、nginx配置

安裝前的準(zhǔn)備
下載模塊依賴性Nginx需要依賴下面3個包

  • gzip 模塊需要 zlib
  • rewrite 模塊需要 pcre
  • ssl 功能需要 openssl

nginx下載地址http://nginx.org/

wget http://nginx.org/download/nginx-1.6.2.tar.gz
tar -zxvf nginx-1.6.2.tar.gz
cd nginx-1.6.2

編譯安裝

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35

make && make install

常用編譯選項說明:

  • –prefix=PATH : 指定nginx的安裝目錄。默認(rèn) /usr/local/nginx
  • –conf-path=PATH : 設(shè)置nginx.conf配置文件的路徑。nginx允許使用不同的配置文件啟動,通過命令行中的-c選項。默認(rèn)為prefix/conf/nginx.conf
  • –with-pcre : 設(shè)置PCRE庫的源碼路徑,如果已通過yum方式安裝,使用–with-pcre自動找到庫文件。
  • –with-http_stub_status_module : 用來監(jiān)控 Nginx 的當(dāng)前狀態(tài)
  • –with-http_ssl_module : 使用https協(xié)議模塊。默認(rèn)情況下,該模塊沒有被構(gòu)建。前提是openssl與openssl-devel已安裝

nginx 常用命令

# 查看版本
 /usr/local/webserver/nginx/sbin/nginx -v   
# 啟動
 /usr/local/webserver/nginx/sbin/nginx 
# 重新載入配置文件
 /usr/local/nginx/sbin/nginx -s reload    
# 重啟 Nginx
 /usr/local/nginx/sbin/nginx -s reopen   
# 停止 Nginx
 /usr/local/nginx/sbin/nginx -s stop              

二、nginx配置

創(chuàng)建nginx使用的用戶:

/usr/sbin/groupadd www 
/usr/sbin/useradd -g www www

查看配置文件:

# cat /usr/local/nginx/conf/nginx.conf

########### 每個指令必須有分號結(jié)束。#################
user administrator administrators;  #配置用戶或者組,默認(rèn)為nobody nobody。
worker_processes 1;  #允許生成的進(jìn)程數(shù),默認(rèn)為1
pid /nginx/pid/nginx.pid;   #指定nginx進(jìn)程運(yùn)行文件存放地址
error_log log/error.log debug;  #制定日志路徑,級別。這個設(shè)置可以放入全局塊,http塊,server塊,級別以此為:debug|info|notice|warn|error|crit|alert|emerg
events {
    accept_mutex on;   #設(shè)置網(wǎng)路連接序列化,防止驚群現(xiàn)象發(fā)生,默認(rèn)為on
    multi_accept on;  #設(shè)置一個進(jìn)程是否同時接受多個網(wǎng)絡(luò)連接,默認(rèn)為off
    #use epoll;      #事件驅(qū)動模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
    worker_connections  1024;    #最大連接數(shù),默認(rèn)為512
}
http {
    include       mime.types;   #文件擴(kuò)展名與文件類型映射表
    default_type  application/octet-stream; #默認(rèn)文件類型,默認(rèn)為text/plain
    #access_log off; #取消服務(wù)日志    
    log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定義格式
    access_log log/access.log myFormat;  #combined為日志格式的默認(rèn)值
    sendfile on;   #允許sendfile方式傳輸文件,默認(rèn)為off,可以在http塊,server塊,location塊。
    sendfile_max_chunk 100k;  #每個進(jìn)程每次調(diào)用傳輸數(shù)量不能大于設(shè)定的值,默認(rèn)為0,即不設(shè)上限。
    keepalive_timeout 65;  #連接超時時間,默認(rèn)為75s,可以在http,server,location塊。

    upstream mysvr {   
      server 127.0.0.1:7878;
      server 192.168.10.121:3333 backup;  #熱備
    }
    error_page 404 https://www.baidu.com; #錯誤頁
    server {
        keepalive_requests 120; #單連接請求上限次數(shù)。
        listen       4545;   #監(jiān)聽端口
        server_name  mysvr;   #監(jiān)聽地址       
        location  ~*^.+$ {       #請求的url過濾,正則匹配,~為區(qū)分大小寫,~*為不區(qū)分大小寫。
           #root path;  #根目錄
           #index vv.txt;  #設(shè)置默認(rèn)頁
           proxy_pass  http://mysvr;  #請求轉(zhuǎn)向mysvr 定義的服務(wù)器列表
           deny 127.0.0.1;  #拒絕的ip
           allow 172.18.5.54; #允許的ip           
        } 
    }

三、nginx訪問路徑配置

location匹配規(guī)則

  • 以=開頭表示精確匹配
  • ^~ 開頭表示url以某個常規(guī)字符串開頭,不是正則匹配
  • ~ 開頭表示區(qū)分大小寫的正則匹配;
  • ~* 開頭表示不區(qū)分大小寫的正則匹配
  • / 通用匹配, 如果沒有其它匹配,任何請求都會匹配到

順序優(yōu)先級:
(location =) > (location 完整路徑) > (location ^~ 路徑) > (location ~* 正則順序) > (location 部分起始路徑) > (/)

location  = / {
  # 只匹配"/".
  [ configuration A ] 
}
location  / {
  # 匹配任何請求,因為所有請求都是以"/"開始
  # 但是更長字符匹配或者正則表達(dá)式匹配會優(yōu)先匹配
  [ configuration B ] 
}
location ^~ /images/ {
  # 匹配任何以 /images/ 開始的請求,并停止匹配 其它location
  [ configuration C ] 
}
location ~* .(gif|jpg|jpeg)$ {
  # 匹配以 gif, jpg, or jpeg結(jié)尾的請求. 
  # 但是所有 /images/ 目錄的請求將由 [Configuration C]處理.   
  [ configuration D ] 
}

1、proxy_pass與rewrite

proxy_pass 配置規(guī)則

location /name/ {
    proxy_pass http://127.0.0.1/;
}
# 請求http://127.0.0.1/name/test.html 會被代理到http://127.0.0.1/test.html
location /name/ {
    proxy_pass http://127.0.0.1;
}
# 請求http://127.0.0.1/name/test.html 會被代理到http://127.0.0.1/name/test.html

上面兩種配置,區(qū)別只在于proxy_pass轉(zhuǎn)發(fā)的路徑后是否帶 “/”

rewrite 配置規(guī)則

rewrite功能就是,使用nginx提供的全局變量或自己設(shè)置的變量,結(jié)合正則表達(dá)式和標(biāo)志位實現(xiàn)url重寫以及重定向。
小括號()之間匹配的內(nèi)容,可以在后面通過$1來引用,$2表示的是前面第二個()里的內(nèi)容。rewrite具體配置請見參考:https://segmentfault.com/a/1190000002797606

例1:

server {
         listen       8000;
        server_name  localhost;

        location /images/ {
                # 重寫規(guī)則信息
                error_log logs/rewrite.log notice; 
                # 注意這里要用‘’單引號引起來,避免{}
                rewrite '^/images/([a-z]{2})/([a-z0-9]{5})/(.*)\.(png|jpg|gif)$' /data?file=$3.$4;
                # 注意不能在上面這條規(guī)則后面加上“l(fā)ast”參數(shù),否則下面的set指令不會執(zhí)行
                set $image_file $3;
                set $image_type $4;
        }
}

對形如/images/ef/uh7b3/test.png的請求,重寫到/data?file=test.png

2.alias和root配置

參考:http://www.jb51.net/article/94367.htm

前期準(zhǔn)備

準(zhǔn)備一些文件,文件列表如下

文件列表

nginx 相關(guān)配置文件如下圖

nginx配置

root指令

root指令指定請求資源的真實路徑,例如:

location /i/ {
  root /data/w3;
}

請求 http://foofish.net/i/top.gif 這個地址時,那么在服務(wù)器里面對應(yīng)的真正的資源是 /data/w3/i/top.gif文件
從圖中我們可以了解到:location指令的第一個“/”同root指令的最后一個“/”是一一對應(yīng)的,然后,root的指定的目錄中,包括 location指定的相關(guān)目錄結(jié)構(gòu),圖中最后一部分顯示的結(jié)構(gòu)。
用戶訪問中,相應(yīng)的“/”也必須同location中的“/”進(jìn)行相關(guān)對應(yīng)。

root命令下的訪問路徑對應(yīng)關(guān)系

alias指令

alias 正如其名,alias指定的路徑是location的別名,不管location的值怎么寫,資源的 真實路徑都是 alias 指定的路徑

location /i/ {
  alias /data/w3/;
}

同樣請求 http://foofish.net/i/top.gif 時,在服務(wù)器查找的資源路徑是: /data/w3/top.gif
從圖中我們可以了解到:location指令的最后一個“/”同root指令的最后一個“/”是一一對應(yīng)的,然后,alias的指定的目錄中,包括 location指定的相關(guān)目錄結(jié)構(gòu),圖中最后一部分顯示的結(jié)構(gòu)。
用戶訪問中,相應(yīng)的“/”也必須同location中的“/”進(jìn)行相關(guān)對應(yīng)。

alias命令下的訪問路徑對應(yīng)關(guān)系

四、nginx備份與恢復(fù)

配置備份

備份安裝目錄下的nginx.conf配置文件及其使用include 加載的配置文件
恢復(fù) 將備份的配置文件復(fù)制到新環(huán)境下的nginx的配置文件目錄下,使用reload命令重新加載配置文件

參考:
[1] https://segmentfault.com/a/1190000002797606

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.ngnix介紹 ngnix www服務(wù)軟件 俄羅斯人開發(fā) 開源 性能很高 本身是一款靜態(tài)WWW軟件 靜態(tài)小文件...
    逗比punk閱讀 2,234評論 1 6
  • Page 1:nginx 服務(wù)器安裝及配置文件詳解 CentOS 6.2 x86_64 安裝 nginx 1.1 ...
    xiaojianxu閱讀 8,674評論 1 41
  • Nginx簡介 解決基于進(jìn)程模型產(chǎn)生的C10K問題,請求時即使無狀態(tài)連接如web服務(wù)都無法達(dá)到并發(fā)響應(yīng)量級一萬的現(xiàn)...
    魏鎮(zhèn)坪閱讀 2,213評論 0 9
  • 1.簡介: ? Nginx:engine X ,2002年,開源,商業(yè)版? http協(xié)議:web服務(wù)器(類似于ht...
    尛尛大尹閱讀 2,001評論 0 3
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,545評論 19 139

友情鏈接更多精彩內(nèi)容