Nginx

Nginx的作用有哪些

  1. 部署前端靜態(tài)代碼,實(shí)現(xiàn)前后端分離
  2. 高并發(fā)下負(fù)載均衡,服務(wù)的容災(zāi)
  3. 代理服務(wù)器(WEB API 網(wǎng)關(guān))


    代理服務(wù)器

什么是虛擬主機(jī)?

虛擬主機(jī)是一種特殊的軟硬件技術(shù),它可以將網(wǎng)絡(luò)上的每一臺(tái)計(jì)算機(jī)分成多個(gè)虛擬主機(jī),每個(gè)虛擬主機(jī)可以獨(dú)立對(duì)外提供 www 服務(wù),這樣就可以實(shí)現(xiàn)一臺(tái)主機(jī)對(duì)外提供多個(gè) web 服務(wù),每個(gè)虛擬主機(jī)之間是獨(dú)立的,互不影響的。

通過(guò) Nginx 可以實(shí)現(xiàn)虛擬主機(jī)的配置,Nginx 支持三種類型的虛擬主機(jī)配置

  • 基于 IP 的虛擬主機(jī)
  • 基于域名的虛擬主機(jī)
  • 基于端口的虛擬主機(jī)

跨域現(xiàn)象(CORS)

Nginx安裝

準(zhǔn)備文件目錄結(jié)構(gòu):

Nginx

我們使用 Docker 來(lái)安裝和運(yùn)行 Nginx,docker-compose.yml?配置如下:

version: '3.1'
services:
  nginx:
    restart: always
    image: nginx
    container_name: nginx
    ports:
      - 81:80
    volumes:
      - ./conf/nginx.conf:/etc/nginx/nginx.conf
      - ./wwwroot:/usr/share/nginx/wwwroot

Nginx配置文件nginx.conf

# 啟動(dòng)進(jìn)程,通常設(shè)置成和 CPU 的數(shù)量相等
worker_processes  1;

events {
    # epoll 是多路復(fù)用 IO(I/O Multiplexing) 中的一種方式
    # 但是僅用于 linux2.6 以上內(nèi)核,可以大大提高 nginx 的性能
    use epoll;
    # 單個(gè)后臺(tái) worker process 進(jìn)程的最大并發(fā)鏈接數(shù)
    worker_connections  1024;
}

http {
    # 設(shè)定 mime 類型,類型由 mime.type 文件定義
    include       mime.types;
    default_type  application/octet-stream;

    # sendfile 指令指定 nginx 是否調(diào)用 sendfile 函數(shù)(zero copy 方式)來(lái)輸出文件,對(duì)于普通應(yīng)用,
    # 必須設(shè)為 on,如果用來(lái)進(jìn)行下載等應(yīng)用磁盤 IO 重負(fù)載應(yīng)用,可設(shè)置為 off,以平衡磁盤與網(wǎng)絡(luò) I/O 處理速度,降低系統(tǒng)的 uptime.
    sendfile        on;

    # 連接超時(shí)時(shí)間
    keepalive_timeout  65;
    # 設(shè)定請(qǐng)求緩沖
    client_header_buffer_size 2k;
    
    #負(fù)載均衡組
    #動(dòng)態(tài)服務(wù)器組
    upstream tomcat {
        server 10.3.133.160:8080;
        #server 192.168.8.203:8080;
    }   

    # 配置虛擬主機(jī) 10.3.133.160
    server {
        # 監(jiān)聽(tīng)的ip和端口,配置 10.3.133.160:80
        listen       80;
        # 虛擬主機(jī)名稱這里配置ip地址
        server_name www.suoron.com;
        # 所有的請(qǐng)求都以 / 開(kāi)始,所有的請(qǐng)求都可以匹配此 location
        location / {
          # 使用 root 指令指定虛擬主機(jī)目錄即網(wǎng)頁(yè)存放目錄
          # 比如訪問(wèn) http://ip/index.html 將找到 /usr/local/docker/nginx/wwwroot/html80/index.html
          # 比如訪問(wèn) http://ip/item/index.html 將找到 /usr/local/docker/nginx/wwwroot/html80/item/index.html

          root   /usr/share/nginx/wwwroot/;
          # 指定歡迎頁(yè)面,按從左到右順序查找
            index  index.html index.htm;
       }      
       location /api/ {
          proxy_pass http://tomcat/;
       }
    }
}

Nginx部署前端

將前端文件發(fā)布到 wwwroot

Nginx 配置文件的結(jié)構(gòu)

# ...
events {
    # ...
}

http {
    # ...
    server{
        # ...
    }

    # ...
    server{
        # ...
    }
}

注:每個(gè) server 就是一個(gè)虛擬主機(jī)

負(fù)載均衡相關(guān)配置說(shuō)明

Nginx目前支持五種策略,分別是:默認(rèn)是輪詢、權(quán)重(weight)、ip_hash、fair(第三方)、url_hash(第三方)


負(fù)載均衡
#### 定義負(fù)載均衡設(shè)備的 Ip及設(shè)備狀態(tài) 
upstream myServer {
    server 127.0.0.1:9090 down;
    server 127.0.0.1:8080 weight=2;
    server 127.0.0.1:6060;
    server 127.0.0.1:7070 backup;
}

在需要使用負(fù)載的 Server 節(jié)點(diǎn)下添加

proxy_pass http://myServer;
  • upstream:每個(gè)設(shè)備的狀態(tài):
  • down:表示當(dāng)前的?server?暫時(shí)不參與負(fù)載
  • weight:默認(rèn)為 1?weight?越大,負(fù)載的權(quán)重就越大。
  • max_fails:允許請(qǐng)求失敗的次數(shù)默認(rèn)為 1 當(dāng)超過(guò)最大次數(shù)時(shí),返回?proxy_next_upstream?模塊定義的錯(cuò)誤
  • fail_timeout:max_fails?次失敗后,暫停的時(shí)間。
  • backup:其它所有的非?backup?機(jī)器?down?或者忙的時(shí)候,請(qǐng)求?backup?機(jī)器。所以這臺(tái)機(jī)器壓力會(huì)最輕
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容