免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
玩轉(zhuǎn)Nginx

本文內(nèi)容包括:

  • nginx配置實(shí)例之反向代理;

  • nginx配置實(shí)例之動靜分離;

  • nginx配置實(shí)例之負(fù)載均衡;

  • nginx配置實(shí)例之高可用;

  • nginx原理分析



nginx基本概念




1、nginx是什么:
nginx是一個高性能的服務(wù)器,占用內(nèi)存少,并發(fā)能力強(qiáng)。

2、反向代理:

  • 正向代理:眾所周知,我們不能直接訪問谷歌,因?yàn)橛袎ΓL問我們就需要梯子,這個梯子就是正向代理。在我們?yōu)g覽器端需要配置正向代理服務(wù)器,然后讓代理服務(wù)器幫我們?nèi)ピL問谷歌,谷歌把內(nèi)容返回給代理服務(wù)器,代理服務(wù)器再把內(nèi)容返回到我們?yōu)g覽器。

  • 反向代理:通常我們自己擼代碼都是發(fā)布到tomcat上,然后直接在瀏覽器訪問tomcat,這個過程是沒有代理的。反向代理就是不直接訪問tomcat,而是在瀏覽器上訪問一個代理服務(wù)器,代理服務(wù)器再決定將請求轉(zhuǎn)發(fā)給哪一個tomcat。對外而言,客戶端根本不知道自己訪問的是代理服務(wù)器。

其實(shí)正向代理和反向代理就是代理的對象不同,正向是代理客戶端,反向是代理服務(wù)端。

3、負(fù)載均衡:
說負(fù)載均衡前先說說我們自己擼的代碼發(fā)布到tomcat然后通過瀏覽器訪問是怎么樣的一個過程。我們通過客戶端請求服務(wù)端,服務(wù)端跟數(shù)據(jù)庫交互,將數(shù)據(jù)返回服務(wù)端,服務(wù)端最后響應(yīng)客戶端。這種方式適合系統(tǒng)業(yè)務(wù)復(fù)雜度較低,請求量不大的情況。如果并發(fā)請求特別多,服務(wù)器是頂不住的,就會由于服務(wù)器性能瓶頸出現(xiàn)問題。解決辦法就是一只湯姆貓拉不動了就多叫幾只貓。

負(fù)載均衡示意圖

4、動靜分離:
靜態(tài)資源是固定的不變的,比如js、css、jpg等,動態(tài)資源就是要與數(shù)據(jù)庫交互的,比如servlet、jsp之類的。未做動靜分離的時候,不管是動態(tài)資源還是靜態(tài)資源,我們都放到同一只湯姆貓上,這樣它負(fù)擔(dān)也挺大的;做了動靜分離,就是把動態(tài)資源放到湯姆貓上,靜態(tài)資源放到另外一臺服務(wù)器上,然后客戶端請求通過nginx,由nginx來決定是訪問動態(tài)服務(wù)器還是靜態(tài)服務(wù)器,這樣就降低了單臺服務(wù)器的壓力。



Nginx的安裝、常用命令和配置文件




1、安裝nginx:

  • 首先進(jìn)入官網(wǎng)下載nginx。https://nginx.org/

  • 安裝需要的編譯工具,包括pcre-devel、openssl-devel、gcczlib-devel。用 yum install make安裝即可。

  • 將nginx上傳到Linux中,解壓,然后進(jìn)入到解壓縮目錄,執(zhí)行./configure,出現(xiàn)下圖才表示configure成功了。

    configure成功
  • 完事兒后再執(zhí)行 make&&make install,如下圖所示則安裝成功了。安裝完后在/usr/local目錄中,會有一個nginx目錄,啟動腳本在nginx/sbin中。

    安裝成功
  • 進(jìn)入到/usr/local/nginx/sbin目錄中,執(zhí)行./nginx,就啟動了nginx,瀏覽器訪問你Linux機(jī)器的ip,出現(xiàn)下圖就表示啟動成功。如果訪問不了,注意防火墻是否開放了80端口。

    nginx啟動成功

2、nginx常用命令:
以下列舉的命令都是在/usr/local/nginx/sbin下執(zhí)行的。

  • ./nginx:啟動nginx

  • ./nginx -s stop:快速關(guān)閉nginx,可能不保存相關(guān)信息

  • ./nginx -s quit:平穩(wěn)關(guān)閉nginx,保存相關(guān)信息

  • ./nginx -s reload:重新加載配置文件

  • ./nginx -s reopen:重新打開日志文件

  • ./nginx -c filename:為nginx指定一個配置文件

  • ./nginx -t:檢查配置文件的配置是否有語法錯誤

  • ./nginx -v:查看nginx的版本

  • ./nginx -V:查看版本以及配置參數(shù)等

3、nginx的配置文件:
配置文件的位置:/usr/local/nginx/conf下的nginx.conf。配置文件分為三部分,全局塊、events塊和http塊。

配置文件
  • 從配置文件開始到events之間的叫全局塊,配置全局的一些指令。worker_processes 1表示nginx處理的并發(fā)數(shù)量,值越大,能處理的并發(fā)量就越多。

  • events塊主要是影響nginx服務(wù)器與用戶的網(wǎng)絡(luò)連接。worker_connections 1024表示支持的最大連接數(shù)。

  • http塊是配置最頻繁的部分,又包括http全局塊和server塊。http全局塊可配置的指令包括文件引入、mime-type定義、日志自定義、連接超時時間和單鏈接請求數(shù)上限等;server塊是最主要的配置部分,配置一些和主機(jī)相關(guān)的東西。



Nginx實(shí)現(xiàn)反向代理




1、最終效果:
在瀏覽器上輸入www.xixihaha.com,跳轉(zhuǎn)到tomcat的主頁面(所以要先安裝一個tomcat并啟動;或者也可以搞個springboot項(xiàng)目丟上去啟動)。因?yàn)橛玫搅擞蛎砸趙indows的host文件中配置域名與虛擬機(jī)ip的映射(域名的工作原理就是先看host文件中有沒有映射,沒有就通過DNS服務(wù)器去解析域名)。

2、進(jìn)行配置:
首先將server_name改成虛擬機(jī)的IP,然后在location那里設(shè)置代理的域名和端口,這樣就搞定了。

配置反向代理

3、代理多個端口:
上面是將www.xixihaha.com的請求轉(zhuǎn)發(fā)到8080端口了,現(xiàn)在像將www.xixihaha.com/xi的請求轉(zhuǎn)發(fā)到8081端口,www.xixihaha.com/ha的請求轉(zhuǎn)發(fā)到8082端口。

  • 首先在8081端口tomcat的webapp目錄下新建一閣文件夾名字為"xi",文件夾里面放一個xi.html;然后在8082端口omcat的webapp目錄下新建一個ha文件夾,在文件夾里面放一個ha.html。分別啟動這兩個tomcat。

  • 然后在server塊里面進(jìn)行如下的配置:

server {
        listen       80;
        server_name  www.xixihaha.com;
        location ~ /xi/ {
            proxy_pass http://127.0.0.1:8081;
        }
        location ~ /ha/ {
            proxy_pass http://127.0.0.1:8082;
        }
    }

注意一個配置文件里可以寫多個server,這個server和剛才配置的轉(zhuǎn)發(fā)到tomcat歡迎頁的可以同時存在。這個server配置location的時候用的類似于正則表達(dá)式,~ /xi/就表示路徑中有xi的就轉(zhuǎn)發(fā)到8081端口。

~   包含該字符串就匹配,區(qū)分大小寫
~*  包含該字符串就匹配,不區(qū)分大小寫
=   完全相同才匹配
^~  匹配不包含正則的且匹配度最高的location
  • 最終效果圖:

    反向代理


Nginx實(shí)現(xiàn)負(fù)載均衡




1、準(zhǔn)備工作:
上面說了負(fù)載均衡就是將多個請求分配給不同的服務(wù)器,減輕單一服務(wù)器的壓力?,F(xiàn)在我們先在8081和8082的tomcat的webapp目錄下新建一個文件夾test,里面都放一個index.html(實(shí)際上這兩個index.html是完全一樣的,就是代表我們需要做負(fù)載均衡的項(xiàng)目,這里為了等下可以更好的看到效果,這兩個html可以做一些標(biāo)記,比如8081的就標(biāo)記一下8081)。

2、在nginx.conf中配置:

  • 在http塊中添加如下配置:

upstream myserver {
    server  192.168.0.103:8081;
    server  192.168.0.103:8082;
}
  • 然后將server塊中的server_name改成虛擬機(jī)的IP或者h(yuǎn)ost中配置的域名(做反向代理的時候已經(jīng)改了)。

  • 在server塊的location中添加如下配置:

proxy_pass  http://myserver;

總體配置如下圖:

負(fù)載均衡配置

配置好以后,在瀏覽器訪問就會發(fā)現(xiàn),第一次訪問的是8081,第二次訪問的是8082,以此輪詢。如果你用谷歌瀏覽器訪問,發(fā)現(xiàn)并沒有輪詢,那是因?yàn)楣雀铻g覽器把index.html緩存下來了。f12之后再f1,然后將下圖中的勾上,然后開著調(diào)試窗口去訪問,就可以看到輪詢的效果了。

調(diào)試時不緩存

3、nginx負(fù)載均衡的算法:

  • 輪詢:nginx默認(rèn)就是輪詢算法,就是不爭不搶,一人一次。上面演示的就是輪詢。

  • 權(quán)重:每臺服務(wù)器設(shè)置權(quán)重,權(quán)重越高的就會接收到越多的請求。配置如下:

upstream myserver {
    server  192.168.0.103:8081 weight=2;
    server  192.168.0.103:8082 down;
    server  192.168.0.103:8083 backup;
    server  192.168.0.103:8084 max_fails=3 fail_timeout=20s fail_time=10s;
}
# weight表示權(quán)重,默認(rèn)是1,值越大,負(fù)責(zé)處理的請求就越多;
# down表示該臺服務(wù)器宕機(jī)了,不參與輪詢;
# backup表示該臺服務(wù)器是替補(bǔ),當(dāng)其他所有的都down或者忙的時候,它才會上場;
# max_fails=3 fail_timeout=20s fail_time=10s表示20秒內(nèi)有超過3個請求失敗了,就將該臺服務(wù)器停機(jī)10秒。
  • ip_hash算法:對用戶的ip進(jìn)行hash取值,然后分配到固定的一臺服務(wù)器上(一樣可以加權(quán))。這樣每個ip都會固定一臺服務(wù)器。配置方法如下:

upstream myserver {
    ip_hash;
    server  192.168.0.103:8081;
    server  192.168.0.103:8082;
}
  • least_conn:將請求轉(zhuǎn)發(fā)給連接數(shù)最少的服務(wù)器(一樣可以加權(quán))。配置方法如下:

upstream myserver {
    least_conn;
    server  192.168.0.103:8081;
    server  192.168.0.103:8082;
}
  • url_hash:這是第三方策略,對url進(jìn)行hash取值,每個url確定一臺服務(wù)器。配置方法:

upstream myserver {
    hash $request_uri
    server  192.168.0.103:8081;
    server  192.168.0.103:8082;
}
  • fair:這是第三方策略,服務(wù)器響應(yīng)時間最短的優(yōu)先分配。配置方法:

upstream myserver {
    server  192.168.0.103:8081;
    server  192.168.0.103:8082;
    fair;
}


Nginx實(shí)現(xiàn)動靜分離




上面說了動靜分離就是將動態(tài)和靜態(tài)請求分離開來,靜態(tài)請求就請求靜態(tài)服務(wù)器,動態(tài)請求就去請求tomcat。

1、實(shí)現(xiàn)方式:

  • 將靜態(tài)資源放到靜態(tài)服務(wù)器單獨(dú)部署,動態(tài)資源放到動態(tài)服務(wù)器單獨(dú)部署(常用方式)。通過location指定不同后綴名實(shí)現(xiàn)不同的轉(zhuǎn)發(fā)。通過expires參數(shù)可以設(shè)置瀏覽器緩存過期時間。比如設(shè)置的值是3d,那么3天內(nèi)的請求,會比對請求的文件有沒有更新,如果沒有,那就直接從瀏覽器緩存返回,狀態(tài)碼為304;如果有變化再從服務(wù)器重新下載,狀態(tài)碼為200。

  • 將動靜態(tài)文件一起混合發(fā)布,再通過nginx來分開。

2、準(zhǔn)備工作:
在linux上準(zhǔn)備一些靜態(tài)資源,比如在/opt下新建一個目錄叫static,然后在static里面建兩個目錄,一個html,一個image,分別放入html文件(index.html)和image(timg.jpg)文件。

3、配置:
在server塊中進(jìn)行如下配置:

listen       80;
server_name  www.xixihaha.com;    
location /html/ {
    root  /opt/static/;
    index index.html index.htm;
}
 location /image/ {
    root /opt/static/;
    # 自動列出目錄下的文件
    autoindex  on;
}

配置文件截圖如下:

動靜分離配置

要注意把location /html/location /image/放到location /的前面。
最后的訪問效果如下圖:

動靜分離效果圖


Nginx高可用




現(xiàn)在是所有請求先到nginx,然后通過nginx分發(fā)到不同的tomcat中。萬一這臺nginx宕機(jī)了,那就涼涼了,所以nginx需要配置高可用。

nginx高可用原理圖

如上圖,有兩個nginx,一個是主nginx,一個是備份nginx。它們倆對外提供一個虛擬IP,客戶端訪問的是虛擬IP。keepalived是一個軟件,它會監(jiān)視nginx,如果正常,那么訪問主nginx,主宕機(jī)了,那么就切換到備份nginx。
1、準(zhǔn)備工作:

  • 在兩臺虛擬機(jī)上安裝nginx;

  • 在兩臺虛擬機(jī)上都安裝keepalived,直接執(zhí)行yum -y install keepalived即可安裝,安裝完成后在etc/keepalived目錄下有其配置文件keepalived.conf。

2、配置高可用:

  • 修改keepalived.conf,將里面的內(nèi)容全部刪掉,替換成下面的內(nèi)容:

#全局定義
global_defs {
     notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL 
}

#檢測nginx是否宕機(jī)的腳本配置
vrrp_script chk_http_port {
   script "/usr/local/src/nginx_check.sh" #腳本的路徑
   interval 2  #檢測腳本執(zhí)行時間間隔
   weight  2
}

#虛擬ip相關(guān)配置
vrrp_instance VI_1 {
    state MASTER #備份服務(wù)器上將此值改成BACKUP
    interface ens33 #centos7 執(zhí)行 ip addr查看網(wǎng)卡
    virtual_router_id 51 #主備機(jī)此值需相同
    priority 100 #主備機(jī)取不同的優(yōu)先級,主機(jī)大一些
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.0.105 #自定義一個虛擬IP
    }
}
  • 編寫檢測腳本nginx_check.sh,放到上面配置的路徑中去。腳本內(nèi)容如下:

#!/bin/bash
A=`ps -C nginx -no-header |wc -l`
if [ $A -eq 0 ];then
   /usr/local/nginx/sbin/nginx
   sleep 2
   if [ `ps -C nginx --no-header | wc -l` -eq 0 ];then
      killall keepalived
   fi
fi
  • 啟動兩臺服務(wù)器的nginx和keepalived。啟動keepalived的命令為systemctl start keepalived.service。

3、測試:

  • 先用配置的虛擬ip進(jìn)行訪問。比如我兩臺虛擬機(jī)的ip分別是103和104,我配置的虛擬IP是105,那么直接在瀏覽器訪問105,可以成功訪問到nginx則配置成功。

  • 在主服務(wù)器上執(zhí)行ip addr命令,出現(xiàn)如下畫面,表示虛擬ip綁定成功:

    虛擬ip綁定成功
  • 把主服務(wù)器上的nginx和keepalived干掉,如果虛擬ip還可以正常訪問,那么說明配置成功。



Nginx原理分析




  • nginx啟動后,有兩個進(jìn)程,一個master,管理員;一個worker,真正執(zhí)行任務(wù)的進(jìn)程。其實(shí)一個master可以管理多個worker,當(dāng)有請求進(jìn)來了,master就告訴所有的worker,worker接到通知就開始爭搶。搶到了任務(wù)的worker再去執(zhí)行具體的操作。

  • 一個master多個worker的好處是,比如我們可以在不重啟nginx的情況下執(zhí)行nginx -s reload命令重新加載配置文件,這就是這樣設(shè)計(jì)的優(yōu)點(diǎn)之一,即利于進(jìn)行熱部署操作;每個worker是獨(dú)立的進(jìn)程,即使有worker掛掉了,也還有其他worker能正常工作;

  • 因?yàn)槊總€worker都可以將一個cpu的性能發(fā)揮到極致,所以worker的數(shù)量設(shè)置成cpu的核數(shù)相等最為合適。設(shè)置方法就是在nginx.conf中修改如下配置的數(shù)值即可:

worker_processes  1;
  • 發(fā)送一個請求,如果是請求靜態(tài),會占用兩個連接,一個請求到worker,另一個將靜態(tài)資源返回給客戶端;如果請求動態(tài)資源,那么就是4個,因?yàn)閣orker和tomcat之間還有兩個。

  • nginx.conf中的如下配置是表示一個worker支持的最大連接數(shù)。

worker_connections  1024;
  • worker的數(shù)量乘以每個worker支持的最大連接數(shù),再去除以2和4,得到的就是nginx支持的最大并發(fā)數(shù)的區(qū)間。




轉(zhuǎn)了嗎
贊了嗎
在看嗎
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
nginx學(xué)習(xí),看這一篇就夠了:下載、安裝。使用:正向代理、反向代理、負(fù)載均衡。常用命令和配置文件
深入淺出Nginx
安裝配置 nginx tomcat 負(fù)載均衡及高可用
企業(yè)高并發(fā)的成熟解決方案(一)
就是要讓你搞懂Nginx,這篇就夠了
Nginx keepalived 實(shí)現(xiàn)高可用,防盜鏈及動靜分離配置,寫得太好了!
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服