準備工作
方向代理
負載均衡
nginx 負載均衡的實作
HTTP Uptream子產品
其他負載均衡的方法
緩存政策
緩存政策
實戰
首先安裝nginx
- centos 可以用 yum神器
-
mac 環境使用 Homebrew神器 來安裝
brow 來源
brew search nginx
brew install nginx
brew info nginx
nginx -v 有版本輸出;安裝成功
-
win10 安裝 nginx
下載下傳資源很多.這裡跳過,講下使用方法
在nginx.exe目錄,打開指令行工具,用指令 啟動/關閉/重新開機nginx ; 或者配置環境變量 start nginx : 啟動nginx nginx -s reload :修改配置後重新加載生效 nginx -s reopen :重新打開日志檔案 nginx -t -c /path/to/nginx.conf 測試nginx配置檔案是否正确 nginx -s stop :快速停止nginx nginx -s quit: 完整有序的停止nginx
nginx.conf 檔案 裡的子產品介紹
//看一眼; 就可以了
#user nobody;
# 工作程序 就是cpu 核數
worker_processes ;
# nginx的日志
# 出錯
#error_log logs/error.log;
# 警告
#error_log logs/error.log notice;
# 基礎資訊
#error_log logs/error.log info;
#pid logs/nginx.pid;
# 最大連結數
events {
worker_connections ;
}
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 ;
# 壓縮
#gzip on;
server {
# 端口
listen ;
# 路徑
server_name localhost;
# 設定語言
#charset koi8-r;
#access_log logs/host.access.log main;
# 項目路徑;
location / {
root html;
index index.html index.htm;
}
....
配置我們自己的 nginx.conf
這裡我們配置我們自己的 nginx.conf 檔案負載均衡(但是原檔案建議是備份一個)
worker_processes auto;
events {
worker_connections ;
}
http {
#配置一 預設 這兩個ip位址 權重一樣 都是1:1 的機率通路到;
#upstream firsttest {
#server 47.104.64.78:3389;
#server 47.104.64.79:3389;
#}
#配置二 ip_hash; 讓使用者落在第一個次通路ip上
#upstream firsttest {
#ip_hash;
#server 47.104.64.78:3389;
#server 47.104.64.79:3389;
#}
#配置三 ip 添加weight; 使目前被通路的 ip權重 為2:1
upstream firsttest {
server : weight=;
server :;
}
server {
listen ;
location / {
proxy_pass http://firsttest;
}
}
}
nginx -t 執行檔案
nginx -s reload 重新開機 nginx服務
本地打開localhost:8080 nginx代理到了阿裡伺服器位址
這是我在阿裡伺服器的nginx歡迎頁 ;
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2Lc1TP31UMrRlT5lleOpHOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2LcRHelR3LcJzLctmch1mclRXY39jNwQDN0EDM0ETOwQDM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
配置我們自己的 pm2.json ##
http://pm2.keymetrics.io/ 官方網站
在此之前要先安裝好pm2 >> npm install pm2 -g
- pm2 指令 啟動檔案可以是.js 或者是.json 等很多檔案類型.按着官方文檔的格式寫就可以了;
- pm2 start app.js 啟動
- pm2 monit 監控
- pm2 list 顯示服務狀态
- pm2 stop app.js
- pm2 restart app.js
- pm2 delete app.js
PM2.json
{
"name": "worker",
//啟動檔案
"script": "app.js",
//監聽
"watch": true,
"log_data_format":"YYYY-MM-DD HH:mm Z",
"out_file":"log/node-app.stdout.log",
//讓node 占滿cpu
"instances" : "max",
//讓我們node以主線程啟動
"exec_mode" : "cluster"
}
keymetrics平台監控 https://app.keymetrics.io/#/ 注冊登陸上去就能連上自己的pm2 就能界面化 監控,檢視cpu情況
把項目扔到伺服器上 ##
比如我們用 build.zip 檔案做測試
npm install –production 釋出模式下npm
ps aux | grep node 産看程式的程序
netstat -anp |grep 3300 檢視哪個端口被占用
kill -9 pid 殺死程序
ssh 使用者名@位址 連接配接ssh
““mac環境: 檔案 /檔案夾
scp course-map.json [email protected]位址:/路徑
scp - r advance/ [email protected]位址:/
unzip build.zip
“““在win環境下 直接使用winscp 傻瓜機;像ftp 一樣直接任代碼;即可
- 首先把項目需要的檔案. 壓個包;
緩存政策 附加的
//nginx.conf 中http 子產品裡面添加
# 設定緩存
# Etag 不過沒有添加配置是預設打開的
Etag off;
# gzip打開壓縮
gzio on;
# 過期時間
expires d;
#設定 告訴浏覽器别去緩存它
add_header Cache-Control no-cache;
前
後
詳細到