使用场景:
前端放在nginx那台服务器上,访问其余2台后端接口服务器地址
首先在前端配置的路径为:nginx地址和端口+共同的路由
例如:127.0.0.1:8080/student
nginx主要配置项
1、upstream:此处配置的是后端地址
upstream student-nginx {
server 127.0.0.1:9000;
server 127.0.0.2:9000;
}
默认是轮询的方式,另有几种种负载均衡方式可配置。
1.1
#ip_hash;
例如
upstream student-nginx {
ip_hash;
server 127.0.0.1:9000;
server 127.0.0.2:9000;
}
这种根据访问ip来区分,如果访问的ip为同一个,在验证session的时候可以用。但是针对微服务的框架,后端入口,但是调其他服务的时候就不能保证访问的是哪一个地址。而ip_hash只能控制入口的地址。
1.2
#weight
根据权重
upstream student-nginx {
server 127.0.0.1:9000 weight=1;
server 127.0.0.2:9000 weight=1;
}
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况
1.3
#fair
upstream student-nginx {
server 127.0.0.1:9000;
server 127.0.0.2:9000;
fair;
}
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
或者有多个nginx的时候,配置在2台nginx上的主机上的前端的配置地址不同。
2 server配置
server {
listen 8080;//监听8080端口,即前端配置
server_name localhost;
location /file {
root /jp/;//前端文件访问地址
index index.html index.htm;
}
location / {//此处是跨域设置
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,token';
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
root /APS/usr/jp/dist;//前端包的绝对路径
index index.html index.htm;
try_files $uri $uri/ @router;
}
location /student {//拦截前端的路由
proxy_pass http://student-nginx/student;
proxy_set_header host $host:$server_port;
proxy_set_header Host $http_referer;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location @router{
rewrite ^.*$ /index.html last;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
其中需要注意的是如果是域名访问,前端直接指定域名,server_name:更改为域名。注意http和https的区分