1. 程式人生 > 實用技巧 >[Noip2018]賽道修建

[Noip2018]賽道修建

nginx介紹

Nginx (engine x) 是一個高效能的HTTP和反向代理web伺服器,同時也提供了IMAP/POP3/SMTP服務。Nginx是由伊戈爾·賽索耶夫為俄羅斯訪問量第二的Rambler.ru站點(俄文:Рамблер)開發的,第一個公開版本0.1.0釋出於2004年10月4日。
其將原始碼以類BSD許可證的形式釋出,因它的穩定性、豐富的功能集、示例配置檔案和低系統資源的消耗而聞名。2011年6月1日,nginx 1.0.4釋出。
Nginx是一款輕量級的Web 伺服器/反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器,在BSD-like 協議下發行。其特點是佔有記憶體少,併發能力強,事實上nginx的併發能力在同類型的網頁伺服器中表現較好,中國大陸使用nginx網站使用者有:百度、京東、新浪、網易、騰訊、淘寶等。

特點: 佔有記憶體少 不超過2M ,併發能力強 3-5萬次/秒

Nginx的安裝

注意事項: Nginx安裝目錄 不要裝到C盤,並且路徑不要有中文 空格 及系統目錄.

關於nginx 程序項說明

記憶體佔用大的是主程序.

手動關閉Nginx 方式:先關閉守護程序,之後關閉主程序

關於nginx 操作命令

命令執行位置: 執行命令時需要在nginx的根目錄中執行.

啟動命令start nginx

重啟命令nginx -s reload

關閉命令nginx -s stop

關於Nginx反向代理配置

http {
    #http協議內,可以有多個服務 每個服務就是一個server
    server {
        # 監聽使用者訪問的埠   預設是80埠
        listen       
80; # server_name 服務名稱 瀏覽器的訪問域名 server_name localhost; #配置反向代理的實現 / 攔截所有的使用者請求 location / { # root代表關鍵字 代表反向代理的目錄 root html; # index 代表預設的訪問頁面 index index.html index.htm; } } }

1.4 配置nginx圖片伺服器

1.4.1 反向代理說明

1.url地址: http://image.jt.com/2020/08/07/cc10f60491234317adf800aeafc6af1f.png
2.本地磁碟地址: D:\JT-SOFT\images/2020/08/07/cc10f60491234317adf800aeafc6af1f.png
目的:通過域名訪問真實的磁碟地址.
可以利用nginx的反向代理完成配置.

1.4.2 編輯Nginx配置檔案

現象: nginx -s reload指令 可以展現報錯資訊.
start nginx 無論啟動是否成功 ,都不能展現報錯.

習慣: 啟動nginx之後,最好執行重啟指令.

# 配置圖片伺服器
    server {
        listen 80;
        server_name image.jt.com;

        ##通過網址轉向指定的目錄  注意/的寫法
        location / {
        
            root D:/JT-SOFT/images;
        }
    }

1.4.3 網路資源訪問請求路徑

說明:通過hosts檔案可以配置域名與IP地址的對映.那麼在本機中可以實現反向代理,如果將來想要在公網中進行反向代理.則必須購買域名.

修改HOSTS檔案

檔案路勁

利用工具軟體管理HOSTS檔案:

京淘配置
#左側寫IP地址 右側寫域名 中間使用空格分隔 配置內容
127.0.0.1 image.jt.com
127.0.0.1 manager.jt.com
127.0.0.1 www.jt.com
127.0.0.1 sso.jt.com

如圖

然後點選右下角綠色圖示

有時會報一個錯誤

解決方案

關於Nginx圖片回顯異常說明

1檢查HOSTS檔案配置正常.

#左側寫IP地址   右側寫域名  中間使用空格分隔
127.0.0.1   image.jt.com
127.0.0.1   manager.jt.com
127.0.0.1   www.jt.com
127.0.0.1   sso.jt.com

2檢查NGINX配置檔案是否正確

# 配置圖片伺服器
    server {
        listen 80;
        server_name image.jt.com;

        ##通過網址轉向指定的目錄  注意/的寫法
        location / {
                 #需要與配置檔案的寫的路勁一樣
            root D:/JT-SOFT/images;
        }
    }

3重啟nginx
在重啟之前檢查是否有多餘的nginx服務項,如果有則關閉.

4hosts檔案是否生效

5根據請求路徑 檢查程式碼中路徑的拼接是否正常.

nginx域名代理

1.5.1業務需求

要求:使用者通過http://manager.jt.com的方式 訪問localhost:8091的伺服器.
利用反向代理的方式實現該功能.

# 商品管理伺服器  監聽的是使用者 manager.jt.com:80  對映的是url地址
    server {
        listen   80;
        server_name  manager.jt.com;

        #進行反向代理
        location / {
            #對映的url請求網址.  關鍵屬性 proxy_pass
            proxy_pass http://localhost:8091;
        }  
    }

Nginx屬性學習

2.1 Nginx負載均衡原理

2.2Nginx 叢集搭建

說明: 要求啟動3臺伺服器,執行jt-manager專案 埠號分別為8081/8082/8083, 通過/getPort請求,獲取當前伺服器埠號資訊並且字串返回.

2.2.1 動態獲取當前伺服器埠號

package com.jt.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class PortController {

    //考點:動態複製操作
    @Value("${server.port}")
    private Integer port;


    @RequestMapping("/getPort")
    public String getPort(){

        return "當前訪問的埠號:"+port;
    }


}

2.3 輪詢策略

說明: 根據nginx的配置檔案,依次訪問伺服器.

# 商品管理伺服器  監聽的是使用者 manager.jt.com:80  對映的是url地址
    server {
        listen   80;
        server_name  manager.jt.com;

        #進行反向代理
        location / {
            #對映的url請求網址.
            #proxy_pass http://localhost:8091;
            proxy_pass  http://jtWindows;
        }  
    }

    #配置叢集  1.預設方式   輪詢策略
    upstream jtWindows {

        server localhost:8081;
        server localhost:8082;
        server localhost:8083;
    }

2.4 權重策略

說明: 效能越高的伺服器,則承擔的壓力也就越高.(關鍵屬性 height=阿拉伯數字)

#配置叢集  1.預設方式   輪詢策略   2.權重策略 
    upstream jtWindows {

        server localhost:8081  weight=6;
        server localhost:8082  weight=3;
        server localhost:8083  weight=1;
    }

2.5 IPHASH策略

需求: 有時在訪問時可能會固定的訪問某臺伺服器.將使用者與伺服器進行繫結.以後使用者只能訪問該伺服器.
演算法: IPHASH演算法.(N為伺服器個數)

    #配置叢集  1.預設方式   輪詢策略   2.權重策略   3.IPhash策略
    upstream jtWindows {
        ip_hash;
        server localhost:8081  weight=6;
        server localhost:8082  weight=3;
        server localhost:8083  weight=1;
    }

弊端:
1. 使用者與伺服器進行繫結,當伺服器宕機時則可能影響使用者的使用.
2. 由於訪問是通過算數計算的結果,可能導致嚴重的負載不均的現象.

2.3Nginx 高階屬性

2.3.1 down屬性

說明:nginx在不做任何的配置時,無法感知伺服器是否正常執行.所有會頻繁的訪問故障機.
解決方案: 可以利用down屬性 來標識故障機.

#配置叢集  1.預設方式   輪詢策略   2.權重策略   3.IPhash策略
    upstream jtWindows {
        #ip_hash;    
     server localhost:
8081 weight=6; server localhost:8081 down; server localhost:8082 ; server localhost:8083 ; }

2.3.2 備用機策略

說明:正常情況下一般伺服器部署時需要準備幾臺伺服器當做備用.正常的情況下該伺服器不參與工作.只有當主機遇忙時/或者宕機時.該伺服器才會工作.

配置方式:

#配置叢集  1.預設方式   輪詢策略   2.權重策略   3.IPhash策略
    upstream jtWindows {
        #ip_hash;    
                server localhost:8081  weight=6;
        server localhost:8081 down;
        server localhost:8082 down;
        server localhost:8083 backup;
    }

            

2.3.3 nginx高可用配置

說明:當tomcat伺服器宕機時,可以通過如下的配置,實現伺服器的自動的切換.無需人為的干預.

配置資訊:
fail_timeout=60s; 設定超時時間(定義一個週期)
max_fails=1 設定最大的訪問失敗次數.

#配置叢集  1.預設方式   輪詢策略   2.權重策略   3.IPhash策略
    upstream jtWindows {
        #ip_hash;    
     server localhost:
8081 weight=6; server localhost:8081 max_fails=1 fail_timeout=60s; server localhost:8082 max_fails=1 fail_timeout=60s; server localhost:8083 max_fails=1 fail_timeout=60s; }

配置說明:
如果nginx訪問某臺伺服器時,如果該伺服器訪問失敗,失敗的次數達到最大失敗次數時.在60秒之內,nginx不會再次訪問故障機.直到下一個週期.