準備工作
方向代理
負載均衡
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 1;
# 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 1024;
}
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 65;
# 壓縮
#gzip on;
server {
# 端口
listen 80;
# 路徑
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 1024;
}
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 47.104.64.78:3389 weight=2;
server 47.104.64.79:3389;
}
server {
listen 8088;
location / {
proxy_pass http://firsttest;
}
}
}
nginx -t 執行文件
nginx -s reload 重啓 nginx服務
本地打開localhost:8080 nginx代理到了阿里服務器地址
這是我在阿里服務器的nginx歡迎頁 ;
配置我們自己的 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 root@ip地址:/路徑
scp - r advance/ root@ip地址:/
unzip build.zip
“““在win環境下 直接使用winscp 傻瓜機;像ftp 一樣直接任代碼;即可
- 首先把項目需要的文件. 壓個包;
緩存策略 附加的
//nginx.conf 中http 模塊裏面添加
# 設置緩存
# Etag 不過沒有添加配置是默認打開的
Etag off;
# gzip打開壓縮
gzio on;
# 過期時間
expires 30d;
#設置 告訴瀏覽器別去緩存它
add_header Cache-Control no-cache;
前
後