亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

Nginx服務(wù)器是一款高性能的服務(wù)器,之前部署網(wǎng)站就使用了它進(jìn)行反向代理,這次就好好總結(jié)Nginx相關(guān)的特性與使用。

你不知道的Nginx服務(wù)器的一些知識

 

01 前言

Nginx服務(wù)器是Web服務(wù)器,也就是我們平時(shí)用來提供Web服務(wù)的。我們之前可能聽過Apache、Tomcat、IIS等的服務(wù)器,其實(shí)Nginx和它們都是一樣的,都可以通過HTTP為瀏覽器等客戶端提供各種服務(wù)。

Nginx服務(wù)器是一個(gè)跨平臺的服務(wù)器,可以運(yùn)行在Window和linux以及mac OS等操作系統(tǒng),它的特點(diǎn)就是可以處理大規(guī)模的并發(fā)連接。接下來就具體介紹一下。

02 正向代理與反向代理

  • 正向代理,代理客戶端,服務(wù)端不知道實(shí)際發(fā)起請求的客戶端;
  • 反向代理,代理服務(wù)端,客戶端不知道實(shí)際提供服務(wù)的服務(wù)端;

比如我們訪問google.com的時(shí)候,是通過正向代理的方式,谷歌服務(wù)器是不知道是哪個(gè)用戶對它進(jìn)行訪問,這就是正向代理;但是假如谷歌服務(wù)器壓力大,承受不了這么多人訪問,用戶的請求就會分發(fā)到不同的谷歌服務(wù)器,用戶不知道自己請求的具體是哪一臺服務(wù)器,這就是反向代理。

「正向代理」

你不知道的Nginx服務(wù)器的一些知識

 

「反向代理」

你不知道的Nginx服務(wù)器的一些知識

 

03 Nginx

「Nginx特點(diǎn)」

  • 響應(yīng)快
  • 擴(kuò)展性強(qiáng)
  • 可靠性高
  • 內(nèi)存消耗少
  • 支持高并發(fā)
  • 熱部署
  • 免費(fèi)開源

「Nginx的使用」

我們要為了能夠方便地使用Nginx,一般我們都會將它安裝在Linux系統(tǒng)上面。所以我們現(xiàn)在服務(wù)器上面安裝Nginx,只需一行代碼就搞定。默認(rèn)情況之下,nginx會安裝在 /etc/nginx目錄之下,其中nginx.conf是它的配置文件。

yum install  nginx

我們有必要了解一下nginx相關(guān)的命令,我們經(jīng)常會使用,比如啟動停止、查看狀態(tài)等。

  • 啟動
systemctl start nginx
  • 停止
systemctl stop nginx
  • 重啟
systemctl restart nginx systemctl status nginx
  • 狀態(tài)
systemctl status nginx nginx -v
  • 版本
nginx -v
  • 測試
nginx -t

「Nginx進(jìn)程」

Nginx服務(wù)器一般都是使用一個(gè)master主進(jìn)程管理多個(gè)worker進(jìn)程的,而worker進(jìn)程一般與服務(wù)器CPU的核數(shù)相等。

master進(jìn)程是不提供服務(wù)的,真正提供服務(wù)的是worker進(jìn)程,worker進(jìn)程之間通過進(jìn)程間通信機(jī)制實(shí)現(xiàn)通信,如負(fù)載均衡等。假如worker某進(jìn)程出錯(cuò),其余進(jìn)程將不受影響繼續(xù)提供服務(wù),master進(jìn)程也會啟動一個(gè)新的進(jìn)程。


「nginx.conf」

nginx的默認(rèn)配置文件一共有以下幾塊,分別配置不同的信息。

user nginx;  #配置用戶或者組,默認(rèn)為nginx。
worker_processes 2;  #允許生成的進(jìn)程數(shù),默認(rèn)為1
pid /nginx/pid/nginx.pid;   #指定nginx進(jìn)程運(yùn)行文件存放地址
error_log log/error.log debug;  #制定日志路徑,級別。級別可為: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è)置一個(gè)進(jìn)程是否同時(shí)接受多個(gè)網(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;  #每個(gè)進(jìn)程每次調(diào)用傳輸數(shù)量不能大于設(shè)定的值,默認(rèn)為0,即不設(shè)上限。
    keepalive_timeout 65;  #連接超時(shí)時(shí)間,默認(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; #錯(cuò)誤頁
    server {
        keepalive_requests 120; #單連接請求上限次數(shù)。
        listen       80;   #監(jiān)聽端口
        server_name  127.0.0.1;   #監(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全局的指令。一般有運(yùn)行nginx服務(wù)器的用戶組,nginx進(jìn)程pid存放路徑,日志存放路徑,配置文件引入,允許生成worker process數(shù)等。
  • events塊:配置影響nginx服務(wù)器或與用戶的網(wǎng)絡(luò)連接。有每個(gè)進(jìn)程的最大連接數(shù),選取哪種事件驅(qū)動模型處理連接請求,是否允許同時(shí)接受多個(gè)網(wǎng)路連接,開啟多個(gè)網(wǎng)絡(luò)連接序列化等。
  • http塊:可以嵌套多個(gè)server,配置代理,緩存,日志定義等絕大多數(shù)功能和第三方模塊的配置。如文件引入,mime-type定義,日志自定義,是否使用sendfile傳輸文件,連接超時(shí)時(shí)間,單連接請求數(shù)等。
  • server塊:配置虛擬主機(jī)的相關(guān)參數(shù),一個(gè)http中可以有多個(gè)server。
  • location塊:配置請求的路由,以及各種頁面的處理情況。

「反向代理」

反向代理用于接收網(wǎng)絡(luò)上的請求,然后將請求轉(zhuǎn)發(fā)到目標(biāo)服務(wù)器,然后目標(biāo)服務(wù)器返回給代理服務(wù)器,最后返回給用戶。此方法延長了請求時(shí)間,但是降低了目標(biāo)服務(wù)器的壓力。

反向代理的基本配置:

  • proxy_pass:將請求代理到當(dāng)前的服務(wù)器,可以是主機(jī)名/IP地址+端口形式
  • proxy_methods:表示轉(zhuǎn)發(fā)時(shí)的協(xié)議方法名,如get/post等
  • proxy_hide_header:指定目標(biāo)服務(wù)器返回給代理服務(wù)器的響應(yīng)中,代理決定哪些頭不轉(zhuǎn)發(fā)給客戶端,值為響應(yīng)頭
  • proxy_pass_header:與上面相反,表示哪些頭允許轉(zhuǎn)發(fā)給客戶端
  • proxy_pass_request_body:是否向目標(biāo)服務(wù)器發(fā)送HTTP包實(shí)體部分,值為on/off
  • proxy_pass_request_headers:是否向目標(biāo)服務(wù)器發(fā)送HTTP頭,值為on/off
  • proxy_redirect:如目標(biāo)服務(wù)器返回301/302重定向,那么就會重設(shè)location或者refresh字段
proxy_redirect http://localhost:8000/two/
      http://frontend;

如果請求http://localhost:8000/two/uri/在返回重定向的情況下,實(shí)際上轉(zhuǎn)發(fā)給客戶端的就是http://frontend/uri,值為off則將使location或者refresh字段維持不變

  • proxy_next_upstream:表示目標(biāo)服務(wù)器轉(zhuǎn)發(fā)請求發(fā)生錯(cuò)誤,換一臺目標(biāo)服務(wù)器處理這個(gè)請求

「負(fù)載均衡」

實(shí)現(xiàn)負(fù)載均衡最關(guān)鍵的模塊就是upstream模塊,服務(wù)器就寫在里面的server字段,對應(yīng)著不同的服務(wù)器。

http {
    upstream test {
        server xx.xxx.xxx.xx   weight:5;
        server xx.xx.xx.xx   max_fails=3 fail_timeout=30s;
    }
    server {
        listen 8080;
        location / {
            proxy_pass http://test;
        }
    }
}

這里的意思就是當(dāng)你請求根路徑的時(shí)候就會代理到upstream里面的兩個(gè)服務(wù)器,以此來實(shí)現(xiàn)負(fù)載均衡的功能。

「server」配置選項(xiàng):

  • weight:向這臺服務(wù)器轉(zhuǎn)發(fā)的權(quán)重,默認(rèn)是1
  • max_fails:與fail_timeout配合使用,如果在fail_timeout時(shí)間內(nèi)的轉(zhuǎn)發(fā)次數(shù)超過max_fails的數(shù)量,代表該服務(wù)器不可用。max_fails默認(rèn)是1,設(shè)為0則不檢查次數(shù)
  • dowm:服務(wù)器下線,只會在ip_hash配置項(xiàng)時(shí)才有用
  • backup:表示該服務(wù)器只是備份的,當(dāng)其他的服務(wù)器失效之后才轉(zhuǎn)發(fā)給它,有ip_hash配置項(xiàng)時(shí)無效

「upstream」配置選項(xiàng):

  • ip_hash:解決同一用戶在不同的服務(wù)器中緩存相同的信息,與weight不可同時(shí)使用
http {
    upstream test {
        ip_hash;
        server xx1.xxx.xxx.xx;
        server xx2.xx.xx.xx;
        server xx3.xx.xx.xx;
    }
    server {
        listen 8080;
        location / {
            proxy_pass http://test;
        }
    }
}

04 小結(jié)

通過對Nginx服務(wù)器的一些理解,會讓我們知道一些網(wǎng)絡(luò)上的知識,如正向代理與反向代理的區(qū)別、負(fù)載均衡的實(shí)現(xiàn)等。

大家也可以嘗試著使用nginx服務(wù)器進(jìn)行一些配置,上面只是一些簡單的配置模塊,如果想要詳情的理解去官網(wǎng)看一下。對于前端來說,懂基本的就可以,不用像運(yùn)維那樣精通所有的配置,當(dāng)然學(xué)有余力最好不過了,奈何自己學(xué)習(xí)能力有限,以后再詳解其中的一二。

分享到:
標(biāo)簽:服務(wù)器 Nginx
用戶無頭像

網(wǎng)友整理

注冊時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定