Nginx技術進階詳講

Nginx技術進階詳講

做者 : Stanley 羅昊html

轉載請註明出處和署名,謝謝!

併發數問題

講到併發數這個概念,想必各位應該都知道是什麼意思,就是同時訪問一個項目,就比咱們如今作的一些項目完工之後要放到公網環境下的時候,全部人都能用,好比,你上百度,同時別人也在上,因此有多少人同時在,又同時去處理,這就是所謂的併發數;java

tomcat的併發數大概在300左右,若是再多的話,它的訪問速度就會變的很慢,這裏值得提一下,雖然只有300,可是併發數仍是比較多的,什麼概念呢?就死在一秒以內,甚至不到一秒,同時訪問這個系統的併發量300左右,固然它也受限於網絡帶寬的問題;nginx

帶寬越大,我在你這個網頁上下載的速度也就越快,若是個人帶寬只有一兆的話,那麼個人下載速度也就幾十KB,因此這些併發數,還受限於這寫影響;spring

Nginx解決併發數問題

剛纔我也說了,Tomcat的併發量大概也就300,同時連進來的人數若要超過這300,那麼速度就會變得很是慢,會出現丟包的狀況,至於什麼是丟包我在這裏就不詳說了,各位能夠自行百度;windows

怎麼解決這個問題呢?瀏覽器

那麼就用Nginx(靜態資源服務武器)來解決這個問題;tomcat

nginx是一個很強大的高性能的wbe和反向代理服務器,它狙狗很是優越的特性:springboot

在鏈接高併發的狀況下,Nginx是Apache服務器不錯的替代品,而它的併發量在50000左右,簡直沒法跟tomcat相比,就不是一個數量級的;服務器

可是有一個疑問就是,那直接學或直接用Nginx不就完了嗎,幹嗎還要學Tomcat、JBOSS....網絡

Nginx是一個HTTP和反向代理服務器,Tomcat是應用服務器,可以運行java程序、執行jsp、serviet;

Nginx不行,它是來處理靜態資源的,你往上面放一個靜態的圖片、視頻、音頻以及一個HTML,它能幫你處理,你往上面放一個java源代碼,它就不能幫你處理了;

因此,Nginx跟Tomcat這些應用服務器沒有任何衝突,Nginx的應用面,跟Tomcat簡直就是兩個應用面,他們之間沒有任何衝突;

使用Nginx訪問靜態資源

Ngxin下載網盤地址【windows】(騰訊微雲):

連接:https://share.weiyun.com/5VfMTOP 密碼:mf39a6

下載安裝好後打開,咱們須要配置一些屬性來作負載均衡👇

1.啓動Nginx

解壓到指定文件夾後,咱們雙擊Nginx:

進去以後雙擊nginx.exe,運行便可【能夠在系統資源管理器】中查看Nginx運行狀態;

2.配置Nginx

在conf文件中,雙擊nginx.conf使用記事本或者其餘文本工具打開:

接下來咱們開始對它的配置文件進行一系列的解讀;

3.Nginx.conf配置文件解讀

點進去後,首先我聲明一點,我不是作運維的,我是幹開發的,因此我只會說一些對於咱們開發而言比較重要的一些配置;

第一部分:👇

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       8888;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

首先,http是處理http協議的,setver算是一個節點,這表明其中一個服務,服務監聽端口是8888端口,當你執行8888端口的時候,他就會自動幫你映射到你Nginx所在的根目錄;

這個根目錄是在我們的電腦上的Nginx安裝目錄:

在配置文件中能夠清晰的看到,它映射到這個nginx根目錄中的html文件夾:

而這裏面的資源,你均可以經過8888來訪問了;

 好比我如今想訪問我這裏的一張圖片,很簡單,打開瀏覽器,直接輸入端口8888,加上你的文件地址全目錄便可【前提是你先啓動Nginx】👇

地址欄輸入👇:

這樣就完成了靜態資源的訪問;

 反向代理(動靜分離)

反向代理(Reverse Proxy)實際運行方式是指以代理服務器來接受internet上的鏈接請求,而後將請求轉發給內部網絡上的服務器,並將從服務器上獲得的結果返回給internet上請求鏈接的客戶端,此時代理服務器對外就表現爲一個服務器。

通俗點理解就是,當你訪問一個頁面,那個頁面上確定有一些什麼圖片啊音頻視頻,當咱們訪問這個網頁的時候,至關於你發了兩次請求,好比百度,你訪問百度一次,又向它的內外服務器發了一次請求,而它的內網服務器就是nginx,它從內網服務器拿出你訪問的一些圖片,音頻,從而能夠看出,靜態資源與動態資源是放在一個不一樣的服務器上;

我訪問百度,百度一看我要訪問的是圖片就是一些靜態資源,那麼,它就是把你的此次請求轉發給靜態資源服務器,獲取圖片後,響應給你;

因此,做爲用戶,你不知道你到底訪問的是哪一臺服務器;

經過反向代理機制能夠作負載均衡;

負載均衡

先經過一張圖大概瞭解一下:

咱們須要在配置文件中配置一下,首先,仍是在剛剛我在上面寫的那個文件,用記事本打開,接下來,我將介紹第二個比較重要的配置👇:

#配置應用服務器的ip端口
http {
upstream myproject {
 server 127.0.0.1:8081;
 server 127.0.0.1:8082;
 }

 server {
 listen 6565;
 server_name www.domain.com;
 location / {
 proxy_pass http://myproject;
 }
 }
}

首先,這段代碼在配置文件中不內置,須要本身手動添加進去,我大概介紹一下;

upstream是關鍵字來標識本身是一個配置反向代理的字段,不能夠更改,後面的myspringboot能夠隨便更改;

後面的就是配置你的應用服務器集羣,用來幫你代理的;

配置完成後重啓才能生效;

直接在任務管理器結束Nginx進程,再開便可~

而下面的server就表明,經過6565來訪問以上兩個應用服務器季集羣,從而達到,負載均衡;

今日感悟:

人的一切痛苦,本質上都是對本身無能的憤怒;

相關文章
相關標籤/搜索