原文参考:https://blog.csdn.net/zy1471162851/article/details/91795712

 

 

 Nginx业务服务器状态

  • down:表示当前server暂时不参与负载
  • weight:默认为1,weight越大,负载的权重就越大
  • max_fails:允许请求失败的次数,默认为1.当超过最大次数时,返回proxy_next_upstream模块定义错误
  • fail_timeout:max_fails次失败后,暂停的时间,默认为10秒
  • backup:其他所有的非backup机器down掉或者忙时,请求backup机器。backup 不能和 ip_hash 关键字一起使用
upstream bakend{ #定义负载均衡设备的Ip及设备状态 
      ip_hash; 
      server 10.0.0.11:9090 down; 
      server 10.0.0.11:8080 weight=2; 
      server 10.0.0.11:6060 max_fails=3 fail_timeout=30s; #最大失败次数为 3,也就是最多进行 3 次尝试,且超时时间为 30秒。max_fails 的默认值为 1,fail_timeout 的默认值是 10s  
}

 实例

 

 

案列:

#user nobody;
worker_processes 4;

events {
worker_connections 1024;
}


http {
include mime.types;
default_type application/octet-stream;

charset utf-8,gbk;
sendfile on;

keepalive_timeout 65;

##### 反向代理 ##### 

upstream seaup {
server  192.168.18.51:7206;
}
server {
listen 80;
server_name localhost;
# 代理本地静态资源
location /pic/ {
   alias  C:/Users/lshan/Desktop/pic/;
   autoindex on;
}

location /api/ {
   proxy_redirect off;
   proxy_set_header Host $http_host;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Real-Port $remote_port;
   proxy_set_header X-Scheme $scheme;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_pass http://192.168.18.51:7206/;
   #proxy_pass http://seaup;
}
location /api2/ {
   proxy_redirect off;
   proxy_set_header Host $http_host;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Real-Port $remote_port;
   proxy_set_header X-Scheme $scheme;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_pass http://192.168.18.51:7206/;
   #proxy_pass http://seaup;
}
}
server {
listen 8080;
server_name localhost;
location / {
   root html;
   index index.html index.html;

}
}

upstream airflow {
#server 192.168.25.140:9888;
server  192.168.18.51:7206;
}

server {
listen 9888;
server_name localhost;

location / {

proxy_pass http://airflow;
index index.html index.htm;
}
}


upstream filebrowser {
server 192.168.25.140:9000;
}

server {
listen 9000;
server_name localhost;

location / {

proxy_pass http://filebrowser;
index index.html index.htm;
}
}

#end http
}

 

 

tip: nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器

nginx 的应用场景 (

http服务器,可以做网页静态服务器;

虚拟主机;

反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。)


windows常用命令

nginx.exe -s stop –停止


nginx优缺点

占内存小,可以实现高并发连接、处理响应快。

可以实现http服务器、虚拟主机、反向代理、负载均衡。

nginx配置简单

可以不暴露真实服务器IP地址

 

一:反向代理

 

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

 

启动一个Tomcat 127.0.0.1:8080

使用nginx反向代理 8080.zyhome.com 直接跳转到127.0.0.1:8080
Host文件新增

127.0.0.1 8080.sea.com

127.0.0.1 8081.shan.com

 

 

nginx.conf 配置:

server {
        listen       80;
        server_name  8080.sea.com;
        location / {
            proxy_pass  http://127.0.0.1:8080;
            index  index.html index.htm;
        }
    }
     server {
        listen       80;
        server_name  8081.shan.com;
        location / {
            proxy_pass  http://127.0.0.1:8081;
            index  index.html index.htm;
        }
    }

 http,默认转为https:

      server {
                listen 80;
                server_name sea-d01.shan.net;
                if ($http_x_forwarded_proto = 'http'){
                    return 301 https://$host$request_uri;
                }
                location / {
                        proxy_pass http://127.0.0.1:9000/;

              }
        }
        server {
                listen 80;
                server_name sea-t01.shan.net;
                if ($http_x_forwarded_proto = 'http'){
                    return 301 https://$host$request_uri;
                }
                location / {
                        alias /opt/UI/sea/;
                }
        }

 

 

二:负载均衡:

  

    轮询(默认)
    每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。 
    upstream backserver { 
    server 192.168.0.14; 
    server 192.168.0.15; 
    } 

    2、指定权重
    指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 
    upstream backserver { 
    server 192.168.0.14 weight=10; 
    server 192.168.0.15 weight=10; 
    } 

    3、IP绑定 ip_hash
    每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。 
    upstream backserver { 
    ip_hash; 
    server 192.168.0.14:88; 
    server 192.168.0.15:80; 
    } 

4、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。 
upstream backserver { 
server server1; 
server server2; 
fair; 
} 

5、url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。 
upstream backserver { 
server squid1:3128; 
server squid2:3128; 
hash $request_uri; 
hash_method crc32; 
} 

 

 

 

配置代码:

upstream backserver 
  { server
127.0.0.1:8080; server 127.0.0.1:8081
; } server { listen 80; server_name www.zyhome.com; location / { proxy_pass http://backserver; index index.html index.htm;        }     }

 宕机轮训配置规则

upstream backserver 
  {
     server 127.0.0.1:8080;
     server 127.0.0.1:8081;
    }

 

server {
        listen       80;
        server_name  www.sea.com;
        location / {
                 proxy_pass  http://backserver;
                 index  index.html index.htm;
                 proxy_connect_timeout 1;
                 proxy_send_timeout 1;
                 proxy_read_timeout 1;
            }     
        }

 

 

三:配置DDOS


限制请求次数

设置Nginx、Nginx Plus的连接请求在一个真实用户请求的合理范围内。比如,如果你觉得一个正常用户每两秒可以请求一次登录页面,你就可以设置Nginx每两秒钟接收一个客户端IP的请求(大约等同于每分钟个请求)。

Nginx限流就是限制用户请求速度,防止服务器受不了

限流有3种,我这只写了最平常的一种(限制访问频率(正常流量))
1、限制访问频率(正常流量)
2、限制访问频率(突发流量)
3、限制并发连接数

1、限制访问频率(正常流量):限制一个用户发送的请求,我Nginx多久接收一个。

 

#定义限流维度,一个用户一分钟一个请求进来,多余的全部漏掉
    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/m;

    #绑定限流维度
    server{
        
        location/seckill.html{
            limit_req zone=one        
            proxy_pass http://lj_seckill;
        }

    }

 

 

 

1r/s代表1秒一个请求 1r/m一分钟接收一个请求

 

(此流也叫做漏桶流,多余的请求全部不要,漏掉)

 

`limit_req_zone`命令设置了一个叫one的共享内存区来存储请求状态的特定键值,在上面的例子中是客户端IP($binary_remote_addr)。location块中的`limit_req`通过引用one共享内存区来实现限制访问/login.html的目的。


原文链接:https://blog.csdn.net/zy1471162851/article/details/91795712

 

 

ngnix  配置监控

、配置Nginx的监控选项:  配置文件路径:/usr/local/nginx/nginx.conf  添加如下代码: 
 #设定Nginx状态访问地址  
location /NginxStatus
{ 
 stub_status on; 
 access_log on; 
 auth_basic "NginxStatus"; 
 #auth_basic_user_file conf/htpasswd;  
}

 

配置完成重启Nginx,命令:/usr/local/nginx/nginx -s reload

状态查看:

 

 

、参数说明

activeconnections–活跃的连接数量

serveracceptshandledrequests—总共处理了107520387个连接,成功创建107497834次握手,总共处理了639121056个请求

每个连接有三种状态waiting、reading、writing

reading—读取客户端的Header信息数.这个操作只是读取头部信息,读取完后马上进入writing状态,因此时间很短。

writing—响应数据到客户端的Header信息数.这个操作不仅读取头部,还要等待服务响应,因此时间比较长。

waiting—开启keep-alive后等候下一次请求指令的驻留连接.

正常情况下waiting数量是比较多的,并不能说明性能差。反而如果reading+writing数量比较多说明服务并发有问题。

补充:

查看Nginx并发进程数:ps-ef|grepnginx|wc-l



监控参考链接:https://www.zhihu.com/question/343670407/answer/812948531

posted on 2019-09-27 10:18  lshan  阅读(400)  评论(0编辑  收藏  举报