nginx入門(一),nginx簡介

簡介:

Nginx是一款自由、開源、高性能的HTTP服務器和反向代理服務器,可以當做(郵件代理)IMAP,POP3,SMTP代理服務器。

基本功能

1,靜態(tài)資源高速高并發(fā)訪問并存儲
2,支持 反向代理服務器,支持緩存
3,簡單負載均衡、節(jié)點健康檢查和容錯功能
4,支持FastCGI(服務的緩存加速)
5,模塊化機制,非DOS機制,支持多種過濾器,如gzip,ssl和用來完成圖形大小調(diào)整的圖像模塊支持SSL

擴展功能

2.擴展功能
1,基于名稱和IP做虛擬主機
2,支持修改nginx配置時平滑重啟,不影響線上業(yè)務
3,支持keep-alive 和 pipelined 連接
4,可利用信號控制nginx進程
5,支持平滑配置更新和程序版本升級;簡單,方便,靈活的配置和管理
6,定制訪問日志格式,臨時緩沖寫日志操作,快速日志輪詢及通過rsyslog處理日志
7,支持URL rewrite,支持URI重寫及正則表達式匹配;支持3xx-5xx HTTP狀態(tài)碼重定向
支持路徑別名
8,基于客戶端ip地址和HTTP基本認證的訪問控制;支持速率限制,并發(fā)數(shù)限制等,支持http響應速率限制,支持同一IP地址并發(fā)連接或請求數(shù)限制
9,支持郵件代理服務

特點

1,高并發(fā):對靜態(tài)資源的高并發(fā)訪問和存儲。一般支持幾萬并發(fā)。
2,資源消耗?。?萬并發(fā)開啟十個nginx線程消耗不到200MB
3,反向代理:優(yōu)秀的反向代理機制

應用場景

1,虛擬主機

就是在一臺服務器啟動多個網(wǎng)站。
那么如何區(qū)分不同的網(wǎng)站了,有兩點

1,域名不同
2,端口不同

2,HTTP服務器

Nginx本身也是一個靜態(tài)資源的服務器,當只有靜態(tài)資源的時候,就可以使用Nginx來做服務器,如果一個網(wǎng)站只是靜態(tài)頁面的話,那么就可以通過這種方式來實現(xiàn)部署。
1、 首先在文檔根目錄Docroot(/usr/local/var/www)下創(chuàng)建html目錄, 然后在html中放一個test.html;
2、 配置nginx.conf中的server

user mengday staff;

http {
    server {                                #用于定義服務,http中可以有多個server塊
        listen       80;                    #指定服務器偵聽請求的IP地址和端口
        server_name  localhost;             #服務名稱,用于配置域名
        client_max_body_size 1024M;

        # 默認location
        location / {                              #用于配置映射路徑uri對應的配置,一個server中可以有多個location, location后面跟一個uri,可以是一個正則表達式, / 表示匹配任意路徑, 當客戶端訪問的路徑滿足這個uri時就會執(zhí)行l(wèi)ocation塊里面的代碼
            root   /usr/local/var/www/html;       #根路徑,當訪問http://localhost/test.html,“/test.html”會匹配到”/”uri, 找到root為/usr/local/var/www/html,用戶訪問的資源物理地址=root + uri = /usr/local/var/www/html + /test.html=/usr/local/var/www/html/test.html
            index  index.html index.htm;          #設(shè)置首頁,當只訪問server_name時后面不跟任何路徑是不走root直接走index指令的;如果訪問路徑中沒有指定具體的文件,則返回index設(shè)置的資源,如果訪問[http://localhost/html/](http://localhost/html/) 則默認返回index.html

        }
    }
}

注意:如果訪問圖片出現(xiàn)403 Forbidden錯誤,可能是因為nginx.conf 的第一行user配置不對,默認是#user nobody;是注釋的,linux下改成user root; macos下改成user 用戶名 所在組; 然后重新加載配置文件或者重啟,再試一下就可以了, 用戶名可以通過who am i 命令來查看。
原文鏈接:https://blog.csdn.net/vbirdbest/article/details/80913319
http://localhost/ 指向/usr/local/var/www/index.html, index.html是安裝nginx自帶的html
http://localhost/test.html 指向/usr/local/var/www/html/test.html

3,靜態(tài)服務器

即簡單的提供一個上傳和下載功能

nginx靜態(tài)服務器

nginx+lua腳本搭建文件上傳下載服務器
上傳下載服務器搭建教程

4,反向代理

反向代理--------> nginx使用最多的功能
反向代理(Reverse Proxy)方式是指以代理服務器來接受internet上的連接請求,然后將請求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務器,并將從服務器上得到的結(jié)果返回給internet上請求連接的客戶端,此時代理服務器對外就表現(xiàn)為一個反向代理服務器

簡單的來說就是真實的服務器不能被外部網(wǎng)絡(luò)直接訪問,所以需要一臺代理服務器,代理服務器就相當于傳遞一個接力棒,同一個nginx服務器還可以根據(jù)請求的不同將不同的請求轉(zhuǎn)發(fā)到不同的服務器中(這個就相當于負載均衡了)。

5,負載均衡

負載均衡是基于高數(shù)據(jù)請求的場景下應用,負載均衡——將請求分攤到多個操作單元上進行執(zhí)行,如:web服務器,F(xiàn)TP服務器,圖片服務器,網(wǎng)關(guān)服務器等等關(guān)鍵服務器上。從而共同完成工作任務。簡單而言就是當有2臺以上服務器時候,根據(jù)規(guī)則(三種分配規(guī)則)將請求分發(fā)到指定的服務器上進行處理。
負載均衡配置一般都需要同時配置反向代理,通過反向代理跳轉(zhuǎn)到負載均衡。
nginx支持的三種均衡策略。

5.1 RR輪詢(默認)
按照請求時間,你一個我一個

5.2權(quán)重
在配置文件當中指定定輪詢幾率,weight和訪問比率成正比, 也就是服務器接收請求的比例就是各自配置的weight的比例,用于后端服務器性能不均的情況,比如服務器性能差點就少接收點請求,服務器性能好點就多處理點請求。
upstream test {
server localhost:8081 weight=1;
server localhost:8082 weight=3;
server localhost:8083 weight=4 backup;
}

5.3 iphash
上面兩種方式存在 當一個用戶(ip)的請求第一次和第二次分配時候可能分配在不同的服務器上,而在不同的服務器上登陸的時候,就需要登陸認證(一般情況下,登陸的信息是放在session里面的)。
iphash的每個請求按訪問ip的hash結(jié)果分配,這樣每個訪客固定訪問一個后端服務器,可以解決session的問題
upstream test {
ip_hash;
server localhost:8080;
server localhost:8081;
}

5.4fair 按照響應時間
upstream backend {
fair;
server localhost:8080;
server localhost:8081;
}

  1. 5 url_hash(第三方)
    按訪問url的hash結(jié)果來分配請求,使每個url定向到同一個后端服務器,后端服務器為緩存時比較有效。 在upstream中加入hash語句,server語句中不能寫入weight等其他的參數(shù),hash_method是使用的hash算法

upstream backend {
hash $request_uri;
hash_method crc32;
server localhost:8080;
server localhost:8081;
}

6,動靜分離

nginx作為靜態(tài)服務器時候訪問速度很快,網(wǎng)站根據(jù)一定的規(guī)則將不變的資源和經(jīng)常變的資源分開來,動靜資源做好了拆分以后,我們就可以根據(jù)靜態(tài)資源的特點將其做緩存操作,這就是網(wǎng)站靜態(tài)化處理的核心思路
代碼展示:

upstream web_servers {  
       server localhost:8081;  
       server localhost:8082;  
}

server {
    listen       80;
    server_name  localhost;

    set $doc_root /usr/local/var/www;

    location ~* \.(gif|jpg|jpeg|png|bmp|ico|swf|css|js)$ {
       root $doc_root/img;
    }

    location / {
        proxy_pass http://web_servers;
        # 必須指定Header Host
        proxy_set_header Host $host:$server_port;
    }

    error_page 500 502 503 504  /50x.html;  
    location = /50x.html {  
        root $doc_root;
    }

 }

參考:
nginx應用場景

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

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

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