nginx


nginx

具备解决高并发,4层 7层负载均衡和代理程序的一种服务.是我们公司常用的一种服务

nginx是如何工作的

  • 高并发是使用了IO多路复用
  • nginx非常强大的原因是因为使用了非常主流的epool模型

epoll模型

  • 异步,非阻塞
  • 每进来一个request,会有一个worker进程去处理。但不是全程的处理,处理到什么程度呢?处理到可能发生阻塞的地方,比如向上游(后端)服务器转发request,并等待请求返回。
  • 那么,这个处理的worker不会这么一直等着,他会在发送完请求后,注册一个事件:“如果upstream返回了,告诉我一声,我再接着干”。于是他就休息去了。这就是异步。
  • 此时,如果再有request 进来,他就可以很快再按这种方式处理。这就是非阻塞和IO多路复用。而一旦上游服务器返回了,就会触发这个事件,worker才会来接手,这个request才会接着往下走。这就是异步回调。

nginx配置文件

  • /etc/logrotate.d/nginx
    日志轮转

  • /etc/nginx/nginx.conf
    总配置文件

  • /etc/nginx/conf.d
    子配置文件夹

  • /etc/nginx/conf.d/default.conf
    默认的网站配置文件

  • /etc/nginx/fastcgi_params
    动态网站模块文件-python,php所需的相关变量

  • /etc/nginx/koi-utf
    字符集,文件编码

  • /etc/nginx/mime.types
    文件关联程序
    网站文件类型 和 相关处理程序

  • /etc/nginx/modules
    模块文件夹。第三方模块

  • /usr/lib/systemd/system/nginx-debug.service
    nginx调试程序启动脚本

  • /usr/lib/systemd/system/nginx.service systemctl
    服务脚本。

  • /usr/sbin/nginx
    主程序

  • /usr/sbin/nginx-debug
    nginx调试程序

nginx优化

  1. 隐藏版本号

    server_tolens off
    
  2. 根据cpu内核数配置nginx work 进程数

    worker_processes 4  进程数
    
  3. 调整nginx work 单个允许的最大连接数

    worker_connections  20480
    
  4. fastagi 调优

  5. 开启gzip压缩功能 节省带宽,提高传输速度用户体验好

    gzip on
    
  6. 开启高效文件传输 防止网络和磁盘io的阻塞

    sendfile on
    tcp_nopush
    
  7. 设置连接超时时间,设置防盗链,基于ip和url的访问控制

内核参数优化

fs.file-max = 99999 worker 可以同时打开的最大句柄数
ipv4 tcp_tw_reuse = 1 允许time-wait的接口重新用于新的tcp连接
ipv4 tcp_tw_recycle = 1 开启time wait 快速回收
ipv4 tcp_syvn_max_backlog = 1024 三次握手建立的允许接受的syn请求队列的最大数
ipv4 tcp_keepalive_time = 30 tcp发送keepalive 确认服务/客户是否存在的时间,调小能更快的清理无效的连接
ipv4 tcp_syncookies = 1 开启半连接池 防止 tcp syn攻击

模块

  1. ngx_http_log_module 日志模块
  2. ngx_http_proxy_module 反向代理模块
  3. upstream 负载均衡
  4. ngx_http_access_module 访问控制模块
  5. 防盗链模块
  6. 替换页面模块(重写)

nginx平滑升级

  • 1.15.2–1.16.0
  1. Nginx1.16.0版本的发布,修复了先前1.15.2版本中内存分配错误,请求处理速率超过配置速率、针对流模块中UDP代理改进、随机负载均衡方法等的问题,为了nginx服务器能提供稳定的服务,nginx需要升级到一个更稳定的版本。

  1. 编译安装新版本ngixn,指定安装目录为新目录
  2. 查看旧的nginx的主进程号和工作进程号
  3. 替换旧的执行程序 备份旧的执行文件
  4. 给主进程发送USR2信号 (USR2 : 启动新的主进程,实现热升级 ) 旧版本的主进程将重命名它的pid文件为.oldbin (例如:/usr/local/nginx/logs/nginx.pid.oldbin),然后执行新版本的nginx可执行程序,依次启动新的主进程和新的工作进程.
  5. 给进程发送WINCH信号 (WINCH : 逐步关闭工作进程 )
    一段时间后,旧的工作进程(worker process)处理了所有已连接的请求后退出,仅由新的工作进程来处理输入的请求了.
  6. 平滑重启 kill -HUP 住进称号或进程号文件路径

nginx会话保持方式

  1. 数据库存储Session

  2. ip_hash

  3. nginx-sticky-module-ng Cookie 第三方模块

nginx与php-fpm通信的两种方式

可以通过tcp socket和unix socket两种方式实现

tcp l通信方式,需要在nginx配置文件中填写php-fpm运行的ip地址和端口号。

unix socket通信方式,需要在nginx配置文件中填写php-fpm运行的pid文件地址

php php-fpm

  1. PHP /usr/local/php/etc/php.ini
  2. memory_limit = 128M 限制PHP使用的内
  3. max_input_time = 300 限制连接接收数据时间
  4. upload_max_fliesize = 16M 文件上传的大小

php-fpm(PHP FastCGI管理器) /usr/local/php/etc/php-fpm.conf

  1. start_server 初始worker进程数

  2. max_children = 50 最大进程数

  3. min_spare_server =5 最小空余进程数

  4. max_spare_servers=10 最大空余进程数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值