• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • nginx簡介

    標簽: 服務器部署

     

    前端Nginx那些事,精益求精

    隨著前端變革,Nginx也成為了前端開發工程師必不可少應該具備的一項技能了,那nginx到底起的是嗎作用? 其實Nginx一直跟我們息息相關,它既可以作為 Web 服務器,也可以作為負載均衡服務器,具備高性能、高并發連接等

    1.負載均衡

    當一個應用單位時間內訪問量激增,服務器的帶寬及性能受到影響,影響大到自身承受能力時,服務器就會宕機奔潰,為了防止這種現象發生,以及實現更好的用戶體驗,我們可以通過配置Nginx負載均衡的方式來分擔服務器壓力。

    當有一臺服務器宕機時,負載均衡器就分配其他的服務器給用戶,極大的增加的網站的穩定性 當用戶訪問web時候,首先訪問到的是負載均衡器,再通過負載均衡器將請求轉發給后臺服務器。

    1.1 負載均衡的幾種常用方式

    輪詢(默認

    // nginx.config
    upstream backserver {
        server 192.168.0.1;
        server 192.168.0.2;
    }

    權重weight

    // nginx.config
    upstream backserver {
        server 192.168.0.1 weight=2;
        server 192.168.0.2 weight=8;
    }

     響應時間來分配

    公平競爭,誰相應快,誰處理,不過這種方式需要依賴到第三方插件nginx-upstream-fair,需要先安裝

    // nginx.config
    upstream backserver {
        server 192.168.0.1;
        server 192.168.0.2;
        fair;
    }
    
    server {
        listen 80;
        server_name localhost; 
        location / {
          proxy_pass  http://backserver;
        }
    }

    1.2 健康檢查

    Nginx 自帶 ngx_http_upstream_module(健康檢測模塊)本質上服務器心跳的檢查,通過定期輪詢向集群里的服務器發送健康檢查請求,來檢查集群中是否有服務器處于異常狀態。

    如果檢測出其中某臺服務器異常,那么在通過客戶端請求nginx反向代理進來的都不會被發送到該服務器上(直至下次輪訓健康檢查正常)。

    基本例子如下

    upstream backserver{
        server 192.168.0.1  max_fails=1 fail_timeout=40s;
        server 192.168.0.2  max_fails=1 fail_timeout=40s;
    }
    
    server {
        listen 80;
        server_name localhost; 
        location / {
          proxy_pass http://backend;
        }
    }

    涉及兩個配置:

     

    • fail_timeout : 設定服務器被認為不可用的時間段以及統計失敗嘗試次數的時間段,默認為10s
    • max_fails : 設定Nginx與服務器通信的嘗試失敗的次數,默認為:1次

    2.反向代理 

    2.1 為什么需要反向代理?

    反向代理的優勢主要有以下兩點

    防火墻作用

    當你的應用不想直接暴露給客戶端(也就是客戶端無法直接通過請求訪問真正的服務器,只能通過Nginx),通過nginx過濾掉沒有權限或者非法的請求,來保障內部服務器的安全

    負載均衡

    也就上一章提到負載均衡,本質上負載均衡就是反向代理的一種應用場景,可以通過nginx將接收到的客戶端請求"均勻地"分配到這個集群中所有的服務器上(具體看負載均衡方式),從而實現服務器壓力的負載均衡

    2.2 如何使用反向代理

    我們通過模擬內部服務器的端口啟動的nodejs項目設置反向代理到80端口訪問

    // nginx.config
    server  {
      listen 80;
      server_name localhost;
      location / {
        proxy_pass http://127.0.0.1:8000;(upstream)
      }
    }

    在 Nginx 反向代理是,會通過 location 功能匹配指定的 URI,然后把接收到的符合匹配 URI的請求通過 proxy_pass 轉移給之前定義好的 upstream 節點池

    3.Https 配置 

    Nginx 常用來配置Https認證,主要有兩個步驟:簽署第三方可信任的 SSL 證書 和 配置 HTTPS

    3.1 簽署第三方可信任的 SSL

    配置 HTTPS 要用到私鑰 example.key 文件和 example.crt 證書文件,而申請證書文件的時候要用到 example.csr 文件。對于想了解更多關于SSL證書的點這里 SSL證書介紹

    3.2 Nginx配置https

    要開啟 HTTPS 服務,在配置文件信息塊(server),必須使用監聽命令 listen 的 ssl 參數和定義服務器證書文件和私鑰文件,如下所示:

    server {
       #ssl參數
       listen              443 ssl; //監聽443端口,因為443端口是https的默認端口。80為http的默認端口
       server_name         example.com;
       #證書文件
       ssl_certificate     example.com.crt;
       #私鑰文件
       ssl_certificate_key example.com.key;
    }
    • ssl_certificate:證書的絕對路徑
    • ssl_certificate_key: **的絕對路徑;

     4.常用的配置

    除了上述的這些,前端還可以用Nginx做些什么,多著呢~下面依依給你講

    4.1 IP白名單

    可以配置nginx的白名單,規定有哪些ip可以訪問你的服務器,防爬蟲必備

    簡單配置

    server {
            location / {
                    deny  192.168.0.1; // 禁止該ip訪問
                    deny  all; // 禁止所有
                }
      }

     白名單配置

    vim /etc/nginx/white_ip.conf
     ...
    192.168.0.1 1; 
     ...

     修改nginx配置(nginx.conf)

    geo $remote_addr $ip_whitelist{
        default 0;
        include ip.conf;
    }
    // geo 指令主要是可以根據指定變量的值映射出一個新變量。 如果不指定變量,默認為$remote_addr

    為匹配項做白名單設置

    server {
        location / {
            if ( $ip_whitelist = 0 ){
                return 403; //不在白名單返回 403
            }
            index index.html;
            root /tmp;
        }
    }

    4.2 適配PC與移動環境 

    當用戶從移動端打開PC端baidu.com的場景時,將自動跳轉指移動端m.baidu.com,本質上是Nginx可以通過內置變量$http_user_agent,獲取到請求客戶端的userAgent,從而知道當前用戶當前終端是移動端還是PC,進而重定向到H5站還是PC站

    server {
     location / {
            //移動、pc設備agent獲取
            if ($http_user_agent ~* '(Android|webOS|iPhone)') {
                set $mobile_request '1';
            }
            if ($mobile_request = '1') {
                rewrite ^.+ http://m.baidu.com;
            }
        } 
    }

    4.3 配置gzip 

    開啟Nginx gzip,壓縮后,靜態資源的大小會大大的減少,從而可以節約大量的帶寬,提高傳輸效率,帶來更好的響應和體驗

    server{
        gzip on; //啟動
        gzip_buffers 32 4K;
        gzip_comp_level 6; //壓縮級別,1-10,數字越大壓縮的越好
        gzip_min_length 100; //不壓縮臨界值,大于100的才壓縮,一般不用改
        gzip_types application/javascript text/css text/xml;
        gzip_disable "MSIE [1-6]\."; // IE6對Gzip不友好,對Gzip
        gzip_vary on;
    }

    4.4 Nginx配置跨域請求 

    當出現403跨域錯誤的時候,還有 No 'Access-Control-Allow-Origin' header is present on the requested resource報錯等,需要給Nginx服務器配置響應的header參數:

    location / {  
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
        add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
    
        if ($request_method = 'OPTIONS') {
            return 204;
        }
    } 

    5.如何使用Nginx 

    通過在本地使用Nginx,從啟動、更改、重啟等環節來介紹Nginx的基本使用

    • 如何啟動 sudo nginx
    • 修改nginx.conf 配置 (具體看你配置位置) vim /usr/local/etc/nginx/nginx.conf
    • 檢查語法是否正常 sudo nginx -t
    • 重啟nginx sudo nginx -s reload

    當我們需要管理多個網站的nginx,nginx文件放在一起是最好的管理方式,一般都存在/nginx/conf.d/,我們需要把配置文件丟到 /etc/nginx/conf.d/ 文件夾下,怎樣才能使這個配置文件既在程序文件夾下,又在 /etc/nginx/conf.d/文件夾下呢?

    假如我們在程序文件夾下有一個 ngxin 配置文件:/home/app/app.nginx.conf 我們需要給這個文件創建一個軟鏈接到 /etc/nginx/conf.d/ 下: ln -s /home/app/app.example.com.nginx.conf /etc/nginx/conf.d/app.nginx.conf 這樣操作之后,當我們改應用配置文件,/etc/nginx/conf.d/ 下與之對應的配置文件也會被修改,修改后重啟 nginx 就能夠使新的 ngxin 配置生效了。

     

    版權聲明:本文為c5211314963原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/c5211314963/article/details/105221223

    智能推薦

    Nginx的簡介

    Nginx介紹 Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,在BSD-like 協議下發行。其特點是占有內存少,并發能力強,事實上nginx的并發能力在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度、京東、新浪、網易、騰訊、淘寶等。 內存: 不到2M 并發能力強: 3-5萬次/秒 理想環境下 /tomcat服務器 150-...

    nginx簡介和使用

    Nginx 的代名詞就是 “高負載均衡服務器”。 官網地址:http://nginx.org/en/download.html 1 簡介 nginx (“engine x”) 是一個高性能的 HTTP 和 反向代理 服務器,也是一個 IMAP/POP3/SMTP 代理服務器。 Nginx 是由 Igor Sysoev 為俄羅斯訪問量第二的 Rambl...

    Nginx簡介---01

    反向代理機制 反向代理服務器位于用戶與目標服務器之間,但是對于用戶而言,反向代理服務器就相當于目標服務器,即用戶直接訪問反向代理服務器就可以獲得目標服務器的資源。同時,用戶不需要知道目標服務器的地址,也無須在用戶端作任何設定。反向代理服務器通常可用來作為Web加速,即使用反向代理作為Web服務器的前置機來降低網絡和服務器的負載,提高訪問效率。 概括: 1.位于用戶(客戶端)-服務器之間. 2.用戶...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    猜你喜歡

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    requests實現全自動PPT模板

    http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

    Linux C系統編程-線程互斥鎖(四)

    互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...

    統計學習方法 - 樸素貝葉斯

    引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...

    精品国产乱码久久久久久蜜桃不卡