Nginx的作用有哪些
- 部署前端靜態(tài)代碼奠蹬,實(shí)現(xiàn)前后端分離
- 高并發(fā)下負(fù)載均衡朝聋,服務(wù)的容災(zāi)
-
代理服務(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 支持三種類(lèi)型的虛擬主機(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 類(lèi)型,類(lèi)型由 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)用磁盤(pán) IO 重負(fù)載應(yīng)用劝篷,可設(shè)置為 off,以平衡磁盤(pán)與網(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ī)名稱(chēng)這里配置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ì)最輕