环境centos7 yum安装nginx ,生产实践可用
编辑 /etc/nginx/conf.d/default.config
# 负载均衡 根据ip hash 到指定服务(服务挂掉会自动启动其他服务,恢复后又打到原来服务)
upstream backend {
ip_hash; # 设置为 IP Hash 模式
server 127.0.0.1:8888 weight=1 max_fails=2 fail_timeout=6s max_conns=1000;
server 127.0.0.1:8889 weight=1 max_fails=2 fail_timeout=6s max_conns=1000;
}
#限流 基于IP地址 漏桶限流
limit_req_zone $binary_remote_addr zone=mylimit:20m rate=10r/s;
#设置每个ip 并发连接
limit_conn_zone $binary_remote_addr zone=perip:20m;
#设置总共并发连接
limit_conn_zone $server_name zone=perserver:20m;
server {
listen 80;
server_name localhost;
client_max_body_size 200M; #文件上传最大设置
#access_log /var/log/nginx/host.access.log main;
#设置 每个ip并发连接
limit_conn perip 6;
#限制nginx 最大连接
limit_conn perserver 6000;
#限制并发连接返回状态码
limit_conn_status 503;
# 页面返回 ,前端开发打包放这个root【目录】
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
# 开启页面压缩,vue打包js文件过大采用压缩加快访问
gzip on;
gzip_min_length 1k;
gzip_comp_level 9;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary on;
gzip_disable "MSIE [1-6]\.";
error_page 500 502 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# 代理后端
location /backend-api {
#如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器,实现故障转移。
proxy_next_upstream http_502 http_504 error timeout invalid_header;
#限流
limit_req zone=mylimit burst=6 nodelay;
#限流状态码
limit_req_status 503;
proxy_pass http://backend;
#禁用缓存
proxy_cache off;
}
#限流503 返回单独处理
error_page 503 = /503;
location /503 {
default_type application.json;
add_header Content-Type 'application/json; charset-utf-8';
return 200 '{"success":false,"errorCode":-1,"data":null,"message":"服务繁忙,请稍后访问"}';
}
}