<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          來了,來了,你們要的Nginx教程來了

          共 5152字,需瀏覽 11分鐘

           ·

          2020-07-22 22:24

          一 Nginx簡介

          1.1 什么是Nginx

          Nginx是一個(gè)高性能的http和反向代理服務(wù)器,其特點(diǎn)是占用內(nèi)存小,并發(fā)能力強(qiáng)。Nginx專為性能優(yōu)化而開發(fā),性能是其最重要的考量,能經(jīng)受高負(fù)載的考驗(yàn),有報(bào)告表明能支持高達(dá)50000個(gè)并發(fā)連接數(shù)。

          1.2 反向代理

          正向代理:在瀏覽器中配置代理服務(wù)器,通過代理服務(wù)器進(jìn)行互聯(lián)網(wǎng)訪問。

          反向代理:將請(qǐng)求發(fā)送到反向代理服務(wù)器,由反向代理服務(wù)器去選擇目標(biāo)服務(wù)器獲取數(shù)據(jù)后,再返回給客戶端,此時(shí)反向代理服務(wù)器和目標(biāo)服務(wù)器對(duì)外就是一個(gè)服務(wù)器,暴漏的是代理服務(wù)器地址。

          1.3 負(fù)載均衡

          如果請(qǐng)求數(shù)過大,單個(gè)服務(wù)器解決不了,我們?cè)黾臃?wù)器的數(shù)量,然后將請(qǐng)求分發(fā)到各個(gè)服務(wù)器上,將原先請(qǐng)求集中到單個(gè)服務(wù)器的情況改為請(qǐng)求分發(fā)到多個(gè)服務(wù)器上,就是負(fù)載均衡。

          1.4 動(dòng)靜分離

          為了加快服務(wù)器的解析速度,可以把動(dòng)態(tài)頁面和靜態(tài)頁面交給不同的服務(wù)器來解析,加快解析速度,降低原來單個(gè)服務(wù)器的壓力。

          二 Nginx的安裝

          Nginx需要幾個(gè)依賴包,分別是pcreopensslzlib,在安裝nginx之前需要先安裝這幾個(gè)依賴。

          2.1 安裝pcre依賴

          1. 使用命令下載pcre壓縮包

          1wget?http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz
          1. 解壓壓縮文件

          1tar?-xvf??pcre-8.37.tar.gz
          1. 進(jìn)入解壓后的名錄,執(zhí)行以下命令

          1./configure
          1. 使用以下命令進(jìn)行編譯安裝

          1make?&&?make?install
          1. 查看安裝的pcre版本號(hào)

          1pcre-config?--version

          2.2 安裝openssl,zlib等依賴

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

          2.3 安裝nginx

          1. nginx官網(wǎng)下載nginx,官網(wǎng)地址:https://nginx.org/download/;

          2. 將壓縮包拖到服務(wù)器上;

          3. 使用命令tar -xvf nginx-1.12.2.tar.gz解壓壓縮包;

          4. 使用命令./configure檢查;

          5. 使用命令make && make isntall編譯安裝;

          安裝成功后,在usr會(huì)多出來一個(gè)文件夾,local/nginx,在nginxsbin文件夾下有啟動(dòng)腳本。

          2.4 啟動(dòng)nginx

          /usr/local/nginx/sbin文件夾下,使用以下命令啟動(dòng)

          1./nginx

          然后瀏覽器訪問服務(wù)器ip,nginx默認(rèn)端口是80,出現(xiàn)以下頁面則證明nginx安裝成功;

          dd76c0ce62572f6a307a0222df7dde47.webp

          2.5 Nginx常用的命令

          使用這些命令時(shí)需要進(jìn)入/usr/local/nginx/sbin文件夾

          • 查看nginx的版本號(hào)

          1./nginx?-v
          • 啟動(dòng)nginx

          1./nginx
          • 關(guān)閉nginx

          1./nginx?-s?stop
          • 重新加載nginx

          1./nginx?-s?reload

          2.6 Nginx的配置文件

          nginx的配置文件在/usr/local/nginx/conf中的nginx.conf。我們將nginx.conf中注釋的內(nèi)容刪除一下。

           1#user??nobody;
          2worker_processes??1;
          3
          4#pid????????logs/nginx.pid;
          5
          6events?{
          7????worker_connections??1024;
          8}
          9
          10http?{
          11????include???????mime.types;
          12????default_type??application/octet-stream;
          13
          14????sendfile????????on;
          15????#tcp_nopush?????on;
          16
          17????#keepalive_timeout??0;
          18????keepalive_timeout??65;
          19
          20????#gzip??on;
          21
          22????server?{
          23????????listen???????80;
          24????????server_name??localhost;
          25
          26????????location?/?{
          27????????????root???html;
          28????????????index??index.html?index.htm;
          29????????}
          30????}
          31}

          nginx的配置文件包含三部門。

          1.全局塊

          從配置文件開始到events塊之間的內(nèi)容,主要會(huì)設(shè)置一些nginx服務(wù)器整體運(yùn)行的配置指令。

          1worker_processes??1;

          這個(gè)代表nginx處理并發(fā)的關(guān)鍵配置,值越大,處理并發(fā)能力越強(qiáng)。但是會(huì)受到硬件、軟件等約束。

          2.events塊

          events塊涉及的指令主要影響nginx服務(wù)器與用戶網(wǎng)絡(luò)的連接。

          1worker_connections??1024;

          這個(gè)代表nginx支持的最大連接數(shù)。

          3.http全局塊

          nginx服務(wù)器配置最頻繁的部分。http全局塊包含http塊server塊

          三 Nginx配置反向代理

          3.1 ngix代理流程

          1a88c2330111614da3a46ff3a45cad34.webp

          本地瀏覽器訪問nginx服務(wù)器,nginx服務(wù)器反向代理tomcat服務(wù)器,當(dāng)我們請(qǐng)求nginx的時(shí)候直接訪問到tomcattomcat的安裝這里就不在講了,我將tomcatnginx安裝在了同一臺(tái)服務(wù)器上。

          3.2 配置ip和域名的綁定關(guān)系

          由于我們的nginx沒有域名,為了演示,因此我們?cè)诒镜?code style="font-size:inherit;color:rgb(248,35,117);">host文件中配置nginx服務(wù)器ip和域名進(jìn)行綁定。這個(gè)host文件的具體位置在C:\Windows\System32\drivers\etc。在host文件中增加一句配置:

          147.104.xxx.xxx?www.javatrip.com

          前面的ip是服務(wù)器的ip地址,后面的域名是我隨便起的用于綁定這個(gè)ip的一個(gè)域名。配置好之后,我們使用域名訪問一下tomcat,如果能請(qǐng)求到tomcat默認(rèn)頁面,則配置成功。

          3f2691d500e2360337745612000a612e.webp

          3.3 在nginx配置請(qǐng)求轉(zhuǎn)發(fā)

          1??server?{
          2????????listen???????80;
          3????????server_name??localhost;
          4
          5????????location?/?{
          6????????????root???html;
          7????????????index??index.html?index.htm;
          8????????}
          9??}

          我們將以上默認(rèn)的配置文件做個(gè)修改:

           1server?{
          2????listen???????80;
          3????server_name??47.104.xxx.xxx;
          4
          5????location?/?{
          6????????root???html;
          7????????proxy_pass?http://127.0.0.1:8080;
          8????????index??index.html?index.htm;
          9????}
          10}

          以上這段配置的意思就是請(qǐng)求是47.104.xxx.xxx:80,都會(huì)轉(zhuǎn)發(fā)至47.104.xxx.xxx:8080

          現(xiàn)在瀏覽器訪問www.javatrip.com,發(fā)現(xiàn)直接轉(zhuǎn)發(fā)到了tomcat上了,這樣簡單的反向代理就完成了。

          3.4 根據(jù)請(qǐng)求后綴分發(fā)

          我們?cè)俳鈮阂粋€(gè)tomcat,端口號(hào)設(shè)置為8081,分別在兩個(gè)tomcatwebapps目錄下面新建devprod目錄,然后在該目錄下寫一個(gè)文件。

          將請(qǐng)求www.javatrip.com:7001/dev轉(zhuǎn)發(fā)到tomcat8080,將請(qǐng)求www.javatrip.com:7001/prod轉(zhuǎn)發(fā)到tomcat8081。現(xiàn)在我們的nginx監(jiān)聽的端口號(hào)是7001。打開nginx的配置文件,新建一個(gè)server如下:

           1server?{
          2????listen???????7001;
          3????server_name??47.104.xxx.xxx;
          4
          5????location?~?/dev/?{
          6????????proxy_pass?http://127.0.0.1:8080;
          7????}
          8
          9????location?~?/prod/?{
          10????????proxy_pass?http://127.0.0.1:8081;
          11????}
          12}

          然后試試效果,分別訪問www.javatrip.com:7001/dev/a.html和www.javatrip.com:7001/prod/a.html,效果如下:

          273aac3163053df312d198d2c0299cd3.webp

          0ca94b403a3481de907c694b92b5d48c.webp

          其中,配置轉(zhuǎn)發(fā)的時(shí)候用到了~,其含義內(nèi)容如下:

          • = 嚴(yán)格匹配。如果這個(gè)查詢匹配,那么將停止搜索并立即處理此請(qǐng)求。

          • ~ 為區(qū)分大小寫匹配(可用正則表達(dá)式)

          • !~為區(qū)分大小寫不匹配

          • ~* 為不區(qū)分大小寫匹配(可用正則表達(dá)式)

          • !~*為不區(qū)分大小寫不匹配

          • ^~ 如果把這個(gè)前綴用于一個(gè)常規(guī)字符串,那么告訴nginx如果路徑匹配那么不測試正則表達(dá)式。

          四 Nginx配置負(fù)載均衡

          4.1 什么是負(fù)載均衡

          負(fù)載均衡(Load Balance),意思是將負(fù)載(工作任務(wù),訪問請(qǐng)求)進(jìn)行平衡、分?jǐn)偟蕉鄠€(gè)操作單元(服務(wù)器,組件)上進(jìn)行執(zhí)行。是解決高性能,單點(diǎn)故障(高可用),擴(kuò)展性(水平伸縮)的終極解決方案。

          現(xiàn)在我們想實(shí)現(xiàn)的效果是通過訪問www.javatrip.com:7001/prod/a.html,將請(qǐng)求分別分發(fā)到兩個(gè)tomcat上面去,首先我們?cè)?code style="font-size:inherit;color:rgb(248,35,117);">tomcat8080上新建一個(gè)prod的文件夾,里面放一個(gè)a.html的文件。這樣tomcat8081tomcat8080兩個(gè)上就都有了一個(gè)prod的文件加且里面有一個(gè)a.html的文件。

          4.2 配置nginx.conf

          首先,在http塊中配置兩個(gè)tomcat的服務(wù)列表

          1upstream?myserver{
          2????server?127.0.0.1:8080;
          3????server?127.0.0.1:8081;
          4}

          其次,在server塊中配置規(guī)則:

           1server?{
          2????listen???????80;
          3????server_name??47.104.xxx.xxx;
          4
          5????location?/?{
          6????????root???html;
          7????????proxy_pass?http://myserver;
          8????????index??index.html?index.htm;
          9????}
          10}

          4.3 測試效果

          訪問地址:www.javatrip.com:7001/prod/a.html,多刷新幾次。發(fā)現(xiàn)有的請(qǐng)求到tomcat8080上,有的請(qǐng)求到tomcat8081上。

          ff489b3d339d09c590fb8dc0a4a496f7.webp

          a71af361c546528e531e6e071266760b.webp

          4.4 nginx支持的幾種負(fù)載策略

          • 輪詢(默認(rèn)):每個(gè)請(qǐng)求按時(shí)間順序逐一分配到不同的服務(wù)器,如果服務(wù)器down了,會(huì)自動(dòng)剔除。

          1upstream?myserver{
          2????server?127.0.0.1:8080;
          3????server?127.0.0.1:8081;
          4}
          • weight(權(quán)重):默認(rèn)為1,權(quán)重越高,分配的請(qǐng)求越多。

          1upstream?myserver{
          2????server?127.0.0.1:8080?weight=1;
          3????server?127.0.0.1:8081?weight=2;
          4}
          • ip hash:每個(gè)請(qǐng)求按訪問ip的hash結(jié)果分配,這樣每個(gè)訪客固定訪問一個(gè)后臺(tái)服務(wù)器,可以解決session的問題。

          1upstream?myserver{
          2????ip_hash;
          3????server?127.0.0.1:8080;
          4????server?127.0.0.1:8081;
          5}
          • fair(第三方):按后端響應(yīng)時(shí)間進(jìn)行分配,響應(yīng)時(shí)間越短分配的請(qǐng)求越多。

          1upstream?myserver{
          2????server?127.0.0.1:8080;
          3????server?127.0.0.1:8081;
          4????fair;
          5}

          由于動(dòng)靜分離在實(shí)際開發(fā)中也不常用,就不再寫了。本篇文章做為一個(gè)nginx入門,到這里就基本完結(jié)了。最后留給大家一個(gè)問題思考一下:如何保證nginx的高可用?

          < END >

          往期精選??服務(wù)之間調(diào)用還需要鑒權(quán)???Java8——方法引用??Java8——Stream流??Spring Boot讀取配置文件的幾種方式??API接口設(shè)計(jì)規(guī)范??重復(fù)提交,你是如何處理的?

          瀏覽 32
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本高清视频一区二区三区 | 免费在线观看色黄 | 三级片久久久 | 熟女草逼| 婷婷丁香五月天婷婷 |