一、配置nginx
1、进入 nginx\conf 目录下,用文本编辑器打开 nginx.conf,对配置文件进行如下修改:
(1) 在 http 中增加 upstream,并配置两台环境的地址;
#有几套环境,就配置几条
upstream pcservice{
server 10.101.137.244:8224 ; #节点1
server 10.101.137.245:8081; #节点2
}
http {
#增加 upstream 的配置,其中 myserver 是自己起的名字
upstream myserver{
server www.jintianxuesha.com 127.0.0.1:8088; #有几套环境,就配置几条
server www.yuanyyleezc.cn 127.0.0.1:8089;
}
}
示例:
#user ;
worker_processes 2;
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;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
sendfile on;
keepalive_timeout 65;
client_max_body_size 8M;
client_body_buffer_size 128k;
client_header_buffer_size 128k;
#add_header X-Frame-Options DENY;
server_tokens off;
#后端负载均衡配置
#两套服务,pcservice可以自己命名
upstream pcservice{
server 10.101.137.244:8224 ; #节点1 ip和端口
server 10.101.137.245:8224 ; #节点2 ip和端口
}
#pc-web应用环境配置
server {
listen 6005; #访问端口配置
server_name localhost;
add_header X-Frame-Options SAMEORIGIN;
add_header Strict-Transport-Security max-age=63072000;
add_header Content-Security-Policy "default-src 'self' at.alicdn.com data:;
style-src 'self' 'unsafe-inline'; worker-src blob:; media-src blob:";
add_header Referrer-Policy strict-origin-when-cross-origin;
location / {
add_header Strict-Transport-Security max-age=63072000;
add_header Content-Security-Policy "default-src 'self' at.alicdn.com data:;
style-src 'self' 'unsafe-inline'; worker-src blob:; media-src blob:";
add_header Referrer-Policy strict-origin-when-cross-origin;
add_header Cache-Control 'no-cache, must-revalidate, proxy-revalidate, max-age=0';
add_header X-Frame-Options SAMEORIGIN;
root /home/test/pc-web/pc; #前端代码路径
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
#后端服务配置
location /pc-service {
proxy_pass http://pcservice/pc-service;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ^~/vms/ {
proxy_pass http://10.109.55.33:83/;
}
}
}
二、Nginx常见的路由策略
1. 轮询法
最简单的轮询法,多余的配置不需要增加。
upstream myserver{
server 127.0.0.1:8088; # 有几套环境,就配置几条
server 127.0.0.1:8089;
}
2. 源地址哈希法
使用 ip_hash 关键字,每一个请求,都按 hash(IP) 的结果决定访问哪台服务器;
upstream myserver{
ip_hash; # hash(IP)
server 127.0.0.1:8088; # 有几套环境,就配置几条
server 127.0.0.1:8089;
}
如果我们本地测试,多次访问接口,可以发现请求永远落到同一个服务上,因为本地 IP 一直没有改变。
3. 加权轮询法
使用 weight 关键字,设置每台服务器的权重;
upstream myserver{
server 127.0.0.1:8088 weight=1; # 20% 请求会发给8088
server 127.0.0.1:8089 weight=4;
}