http {limit_conn_zone $binary_remote_addr zone=conn_zone:10m;limit_req_zone $binary_remote_addr zone=req_zone:10m rate=1r/s;# 其他配置}server {listen 80;server_name example.com;# 限制单个客户端 IP 最大连接数为 2limit_conn conn_zone 2;# 限制单个客户端 IP 1s 内最多发起 1 个请求limit_req zone=req_zone burst=5;# 计算客户端 IP 累计请求流量,限制累计请求流量为 1GBset $limit_rate 128k;limit_rate_after 500M;limit_rate 1m;# 其他处理逻辑}
#统计其他端口时:netstat -pnt | grep :xx | wc -lnetstat -pnt | grep :443 | wc -l
#服务器被恶意高频访问时可以用到netstat -ant |awk '/:443/{split($5,ip,":");++A[ip[1]]}END{for(i in A) print A[i],i}' |sort -rn|head -n20
#如统计文件api_error.log中error关键词出现的次数grep -o 'error' /www/payment/runtime/logs/api_error.log | wc -l
#可以监听整个文件,也可根据关键词监听cd /www/payment/runtime/logs/tail -f xxx.log #监听整个文件tail -f xxx.log | grep 'xxx' #根据关键词监听
#以下是本人开发中常用到的一、du命令 du命令是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的。 du -h filepath 直接得出人好识别的文件大小 du -h ljl.txt 或者 du -ah 当前目录下所有文件的大小 二、ls命令 ls命令用来显示目标列表,在Linux中是使用率较高的命令。ls命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件。 ls -l filepath 第五列为文件字节数 ls -l ljl.txt ls -h filepath h表示human, 加-h参数得到人好读的文件大小 ls -lh ljl.txt
#使用这个是为了查看异常登录地址yum -y install whois whois 119.53.224.203
df -h
ln -s [源文件或目录] [目标文件或目录]例如:创建软链时,先进入根目录的bin目录下 cd /bin 从/bin这个路径创建软链nginx 引入/usr/local/nginx/sbin/nginx ln -s /usr/local/nginx/sbin/nginx nginx 创建软链之后 重载nginx 就可以从 /usr/local/nginx/sbin/nginx -s reload 简化为 nginx -s reload
netstat -ant | grep 9000
#server模块中添加以下内容,修改完后,记得重启nginxadd_header Access-Control-Allow-Headers '*';add_header Access-Control-Allow-Origin '*';add_header Access-Control-Allow-Credentials 'true';add_header Access-Control-Allow-Methods 'GET,POST,OPTIONS';#跨域参数解释#Access-Control-Allow-Origin:服务器默认是不被允许跨域的。给Nginx服务器配置Access-Control-Allow-Origin *后,表示服务器可以接受所有的请求源(Origin),即接受所有跨域的请求。#Access-Control-Allow-Methods:允许通过的方法,可以防止Content-Type is not allowed by Access-Control-Allow-Headers in preflight response的错误信息#Access-Control-Allow-Credentials true 表示允许跨域请求携带 cookie#Access-Control-Allow-Headers:为了防止出现Request header field Content-Type is not allowed by Access-Control-Allow-Headers in preflight response的错误信息。这个错误表示当前请求Content-Type的值不被支持。其实是我们发起了”application/json”的类型请求导致的
server {listen 443 ssl;#监听443端口#server_name 购买域名后解析到该服务器上,如果没有域名,也可以给此项目单独开端口server_name api.applet.xxx.com;root /xxx/xxxx/xxxx;#root 项目地址index index.php index.html index.htm;#项目入口文件#存放证书的地址.pem和.key文件ssl_certificate /usr/local/nginx/conf/vhost/cert/xxx.pem;ssl_certificate_key /usr/local/nginx/conf/vhost/cert/xxx.key;ssl_session_timeout 5m;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_prefer_server_ciphers on;if (!-e $request_filename){rewrite ^/(.*) /index.php last;}location ~ \.php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}error_log /var/log/nginx/api_applet.log error;}
#这里讲到的是CentOS7,CentOS7的防火墙和CentOS6不一样了, CentOS 6 系列中的 iptables 相关命令不能用了,Centos7中使用firewalld代替了原来的iptables。#停止firewallsystemctl stop firewalld.service#禁止firewall开机启动systemctl disable firewalld.service#添加8022端口firewall-cmd --zone=public --add-port=8022/tcp --permanent#多个端口:firewall-cmd --zone=public --add-port=80-90/tcp --permanent#命令含义:--zone #作用域--add-port=8022/tcp #添加端口,格式为:端口/通讯协议--permanent #永久生效,没有此参数重启后失效#centos7查看防火墙所有信息firewall-cmd --list-all#centos7查看防火墙开放的端口信息firewall-cmd --list-ports#删除8022端口firewall-cmd --zone=public --remove-port=8022/tcp --permanent#重启防火墙firewall-cmd --reload 常用命令介绍: firewall-cmd --state ##查看防火墙状态,是否是runningfirewall-cmd --reload ##重新载入配置,比如添加规则之后,需要执行此命令firewall-cmd --get-zones ##列出支持的zonefirewall-cmd --get-services ##列出支持的服务,在列表中的服务是放行的firewall-cmd --query-service ftp ##查看ftp服务是否支持,返回yes或者nofirewall-cmd --add-service=ftp ##临时开放ftp服务firewall-cmd --add-service=ftp --permanent ##永久开放ftp服务firewall-cmd --remove-service=ftp --permanent ##永久移除ftp服务firewall-cmd --add-port=80/tcp --permanent ##永久添加80端口
#是不是以为cat只有 cat filename 这个命令?#不不不,它还可以更骚气。接下来介绍一下cat命令常用又不常用的命令1. 显示文件内容 使用cat命令可以打印出文件的内容,如: cat filename 这将把文件的所有行打印到终端上。2. 将多个文件合并 使用cat命令还可以将多个文件合并成一个文件,如: cat file1 file2 > file3 这将把file1和file2的内容合并成一个新文件file3。3. 使用管道输出内容 在Linux环境下,使用管道可以将一个命令的输出作为另一个命令的输入,如: cat filename | grep keyword 这将把filename文件中包含keyword的行输出。4. 压缩文件 cat命令还可以用于压缩文件。将cat输出重定向到一个tar命令中,可以将文件压缩成一个tar文件,如: cat file1 file2 | tar -czf archive.tar.gz -这将把file1和file2打包成一个tar文件,然后使用gzip进行压缩。5. 重定向输出 使用重定向符号可以将cat命令的输出重定向到文件中,如: cat filename > newfile 这将把filename的内容输出到newfile中,如果newfile不存在则会创建一个新的文件。
nginx内置负载均衡策略主要分为三大类,分别是轮询、最少连接和ip hash1. 轮询 以循环方式分发对应用服务器的请求,将请求平均分发到每台服务器上。1.1 普通轮询方式 该方式是默认方式,轮询适合服务器配置相当,无状态且短平快的服务使用。另外在轮询中,如果服务器挂掉,会自动剔除该服务器。http {# 定义转发分配规则upstream myapp1 {server baidu.com; # 要转发到的服务器,如ip、ip:端口号、域名、域名:端口号server baidu2.com:8088;server 192.168.0.1:8088;}server {listen 443; # nginx监听的端口location / {# 使用myapp1分配规则,即刚自定义添加的upstream节点# 将所有请求转发到myapp1服务器组中配置的某一台服务器上proxy_pass http://myapp1;}}}1.2权重轮询方式 如果在 upstream 中配置的server参数后追加 weight 配置,则会根据配置的权重进行请求分发。此策略可以与least_conn和ip_hash结合使用,适合服务器的硬件配置差别比较大的情况。# 定义转发分配规则upstream myapp1 {server baidu1.com weight=1; # 该台服务器接受1/6的请求量server baidu2.com:8088 weight=2; # 该台服务器接受2/6的请求量server 198.16.0.1:8088 weight=3; # 该台服务器接受3/6的请求量;}2. 最少连接 轮询算法是把请求平均的转发给各个后端,使它们的负载大致相同;但是,有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,least_conn这种方式就可以达到更好的负载均衡效果,适合请求处理时间长短不一造成服务器过载的情况# 定义转发分配规则upstream myapp1 {least_conn; # 把请求分派给连接数最少的服务器server baidu.com;server baidu1.com:8088;server 192.168.0.100:8088;}2.3 ip hash 这个方法确保了相同的客户端的请求一直发送到相同的服务器,这样每个访客都固定访问一个后端服务器。如用户需要分片上传文件到服务器下,然后再由服务器将分片合并,这时如果用户的请求到达了不同的服务器,那么分片将存储于不同的服务器目录中,导致无法将分片合并,该场景则需要使用ip hash策略。 需要注意的是,ip_hash不能与backup同时使用,另外当有服务器需要剔除,必须手动down掉,此模式适合有状态服务,比如session。# 定义转发分配规则upstream myapp1 {ip_hash; # #保证每个请求固定访问一个后端服务器server srv1.com;server srv2.com:8088;server 192.168.0.100:8088;}
每天记录一点点,慢慢来。持续更新…
如果觉得博客文章对您有帮助,异或土豪有钱任性,可以通过以下扫码向我捐助。也可以动动手指,帮我分享和传播。您的肯定,是我不懈努力的动力!感谢各位亲~