nginx学习笔记三

一.需要了解实现反向代理(负载均衡)
1.在http里添加集群
upstream webs {
server 192.168.2.100:80;
server 192.168.2.200:80;
}

2.在location中添加
location / {
proxy_pass webs;
root html;
index index.html;
}

二.需要了解配置upstream服务器机群池属性
1.weight //权重
2.max_fails //设置最大失败次数
3.fails_timeout //设置失败超时时间,单位为秒
4.down //标记服务器已经关机,不参与集群调度

三.配置upstream服务器集群的调度算法
例如:
upstream webs {
ip_hash; //设置完之后,可以让相同客户端匹配相同的服务器
server 192.168.2.100 weight=1 max_fails=2 fail_timeout=10;
server 192.168.2.200 weight=2 max_fails=2 fail_timeout=10;
}

四.熟悉TCP/UDP调度器
1.需要安装nginx的–with-stream(开启4层反向代理功能) --with_ssl-_module(开启SSL加密功能)
2.配置nginx.conf文件
例如:
stream {
upstream sshs {
server 192.168.2.100:22;
server 192.168.2.200:22;
}
server {
listen 12345;
proxy_pass sshs;
}
}

五.nginx常见问题处理
1.如何自定义返回给客户端的404的报错页面
-配置nginx.conf配置文件,并解除其注释
error_page 404 /40x.html //自定义错误页面

2.如何查看服务器状态信息
  -安装--with-http_stub_status_module模块
  -配置nginx.conf文件
 location /status {
     stub_status on;
     allow 192.168.4.10;
     deny  all;                          //只能本机服务器访问
   }
   禁用所有外网ip,仅允许内网ip
   例如:
  location / {
     allow 192.168.1.0/24;
     deny all;
    }

3.如何设置与客户端的连接时间
  问题:在http1.1的版本中,实现了一次连接多次请求,这样会出现,用户没有将服务退出,导致服务器不断的返回信息,增加了服务器的负担,所以需要设置一定的时间,可以让服务器单方面的断开连接
  -在nginx.conf配置文件中
 keepalive_timeout  ;   //设置时间,到达一定的时间客户端没有反应就会断开连接

4.优化nginx并发量
   可以使用 ab 测试工具,在httpd-tools软件包中
   例如:
      ab -c 200 -n 200 http://192.168.4.10/    //模拟测试200人同时点击200下进行访问,结尾必须添加/
   在nginx.conf配置文件中
  -worker_processes ;   //设置工作的进程数量,需要与主机的cup数量匹配
  -events {
     worker_connections 65535;   //每个进程最大的并发数量,可以写多一些
     }
   在配置完上面的操作之后,需要搭配设置linux系统本身能够打开文件的数量限制,此操作是在服务器上进行
  -ulimit -Sn 100000   (硬限制,临时规则,一定不能超过)
  -ulimit -Hn 100000   (软限制,临时规则,可以超过,会有提醒)
   永久配置:
     /etc/security/limits.conf
       *   soft nofile 100000    //*代表任意ip可以进行访问,soft代表硬连接,hard代表软连接
       *   hard nofile 100000 

5.优化nginx数据包头缓存(进行该实验时需要取消掉反向代理的调度器)
   在nginx.conf文件的http模块中添加
   例如:
  http {
     client_header_buffer_size 1k;           //为每个用户通过1k的缓存
     large_client_header_buffers 4 1m;       //如果1k不够的话,还可以提供4个1m的容量
    }

6.对静态页面的缓存
    配置nginx.conf文件
    添加:
  location ~* \.(jpg|jpeg|gif|png|css|js|ocl|xml) $ {
    expires  30d;                                  //定义客户端缓存时间为30天
    }

7.日志文件的切割
    利用脚本实现日志文件的切割
   #! /bin/bash
   Date=`date +%Y%m%d`
   logpath=/usr/local/nginx/logs/
   mv ${logpath}/access.log ${logpath}/access-$Date
   mv ${logpath}/error.log ${logpath}/error-$Date
   kill -USR1 $(cat $logpath/nginx.pid)

   *USR1亦通常被用来告知应用程序重载配置文件;例如,向Apache HTTP服务器发送一个USR1信号将导致以下步骤的发生:停止接受新的连接,等待当前连接停止,重新载入配置文件,重新打开日志文件,重启服务器,从而实现相对平滑的不关机的更改

   crontab -e -uroot
   03 03 * * 5 /usr/local/nginx/logback.sh

8.对页面进行压缩处理  //其原理是将图片进行压缩后再发送
   http{
   gzip on;                       //开启压缩
   gzip_min_length 1000;          //设置最小的压缩大小为1000字节,小文件越压越大,
   gzip_comp_level 4;             //1-9的比例,数字越大,压缩越好,速度越慢,反之则压缩差,速度更慢
   gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;     //设置压缩的类型
  }

9.服务器内存缓存
   http{
    open_file_cache  max=2000 inactive=20s;   //最大缓存2000个文件  关闭20s内没有人访问的文件
           open_file_cache_valid 60s;         //每个每件的有效时间为60s,60s之后过期
           open_file_cache_min_uses 5;        //只有访问次数超过5次才会被缓存
           open_file_cache_errors off;        //关闭缓存报错,因为缓存很容易过期,会导致一直报错
   }

六.netstat 或 ss 命令使用
-a:显示所有端口的信息
-n:以数字格式显示端口号
-t:显示TCP连接的端口
-u:显示UDP连接的端口
-l:显示服务正在监听的端口信息,如httpd启动后,会一直监听80端口
-p:显示监听端口的服务名称是什么(也就算程序名)

七.常见的http状态码
状态码 功能描述
200 一切正常
301 永久重点向
302 临时重点向
401 用户名或密码错误
403 禁止访问(客户端IP地址被拒绝)
404 文件不存在
414 请求URI头部过长
500 服务器内部错误
502 Bad Gateway

猜你喜欢

转载自blog.csdn.net/weixin_42917630/article/details/88014775