• Nginx笔试题!


    1、Nginx实现HTTP及TCP负载均衡的模块?
    HTTP就是工作在七层协议
    TCP工作在四层协议

    Nginx七层负载:
    七层通过虚拟的URL或主机名接收请求
    在server里面配置location反向代理给真实服务器。

    Nginx四层负载:
    四层就是基于IP+端口的负载均衡
    可以定义stream,它和server平等级,可以定义多个端口,然后再pare_pass
    反向代理到真实服务器。

    2、Nginx中的模块分类及常见核心模块有哪些?
    Nginx的架构
    Master:
    只负载任务分发调度,加载conf配置文件和调度worker。
    worker:
    只负责处理Master分发的请求,可以在全局配置里面配置多个进程数量。

    Standard HTTP modules标准的http模块
    Optional HTTP modules可选的http模块
    Mail modules邮件模块
    Stream modules:流模块,传输层代理,4层tcp和udp代理,传输层代理
    3rd party modules第三方模块

    3、Nginx负载均衡中常见的算法及原理有哪些?
    常见的算法有
    轮询,加权轮询:
    轮询是一定时间给每台服务器分配数量差不多的请求。
    加权轮询是根据服务器的性能分配,权重越大分配请求越多。
    ip_hash:
    客户端绑定请求,每次请求就在绑定的服务器在处理
    least_conn:
    哪个服务器的闲置资源多,请求就多往哪个服务器发送。
    fail:
    根据请求响应时间,智能分配请求数量
    url_hash:
    根据urlhash分配请求


    4、Nginx实现负载均衡集群的主要配置参数要哪些?
    比如http的负载均衡,Nginx作为反向代理
    配置upstream参数为真实服务器名称(跟server同级)
    然后在server配置里面配置location判断什么页面
    通过proey_pass 代理到处理什么页面的服务器。


    5、Nginx负载均衡中常用的server配置参数有哪些?
    upstream:定义一组真实服务器
    proxy_pass:反向代理
    weight:轮询权值
    least_conn:资源服务器哪个资源占用少请求多往那个发
    fair:根据服务器响应时间分配请求
    url_hash:根据urlhash分配请求

    6、Nginx负载均衡中通过哪些参数实现对节点的健康状态检查?
    max_fails=3 fail_timeout=10s;
    如果某服务器请求失败次数超过三次,nginx会把他踢出群聊,恢复又重新加入。
    location /status
    查看nginx访问状态


    7、Nginx负载均衡的指令有哪些?
    weight:轮询权值
    fair:根据服务器响应时间分配请求
    least_conn:根据服务器资源分配请求
    url_hash:根据urlhash分配请求
    默认:轮询
    location /status:查看状态

    8、Nginx如何实现TCP四层转发,用到的模块是?
    stream模块


    9、Apache实现Tomcat负载均衡的方式?
    主要是配置proxy
    在里面加入想要负载均衡的机器,以及配置负载均衡的算法
    比如:loadfactor 权值调整,设置均衡分配请求,指定超时等。

    https://blog.csdn.net/weixin_42480196/article/details/101022767

    10、描述DDOS、CC、爬虫等攻击手段,描述Nginx如何进行防护?
    需要讲解


    11、描述Apache、Nginx、Lighttpd、IIS等WEB服务器的特点?
    Apache:
    兼容性强,和php无缝结合,稳定性强,处理动态模块效率较高。
    Nginx:
    内存资源占用少,处理静态网页效率高,一般是企业中间件反向代理的首选,异步处理扛高并发请求。
    Lighttpd:

    12、描述WEB服务器中的select和epoll模型的特点?
    都是多路复用io
    select:
    单个进程可以同时处理多个io请求,但是连接上这些请求,其他所有请求就被阻塞了,
    然后内核就会检查select负责的fd(文件描述符),之后再把它负责到缓冲区。

    epoll:
    epoll模型打开的fd的数量没有限制,大概一G打开十万,而且它不用内核检查再复制,而是直接
    在打开注册的时候就复制到了内核。

    所以select效率是没有epoll高的。

    13、描述Nginx服务控制信号有哪些?描述Nginx服务器启动脚本的编写思路?
    HUP: 这个是重新加载nginx配置文件
    QUIT:杀死nginx进程
    USR1:切换日志文件
    USR2:平滑升级发送信号
    首先定义pid和定义日志路径,之后创建日志文件,再判断nginx pid文件是否存在
    也就是判断nginx关闭还是打开,是打开就mv把日志移动到指定位置,然后再USR1新生成一个日志文件


    14、描述Nginx中worker_processes、worker_cpu_affinity、worker_rlimit_nofile、worker_connections配置项含义?
    worker_processes:nginx工作进程数量
    worker_cpu_affinity:cpu个数
    worker_rlimit_nofile:一个nginx工作进程数量打开文件数量限制
    worker_connections:每个进程连接最大数量

    15、描述Nginx中$remote_addr、$status、$http_referer、$http_user_agent等变量的含义?
    $http_user_agent:
    判断客户端手机什么型号或者浏览器什么类型,可以给指定的型号给定不同的页面。
    $http_referer:访问控制返回状态码
    $status:查看网站的访问状态等信息,比如连接多少,多少次握手,响应多少请求,

    $remote_addr:可以在后面指定ip,如果匹配到这个ip可以通过port_pass代理到
    自定义的机器组。

    16、如何查看Nginx用户的访问状态?
    可以在nginx主配置文件nginx.conf 开启用户日志,log_format
    路径位于:/nginx/logs/access.log
    #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
    # '$status $body_bytes_sent "$http_referer" '
    # '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log logs/access.log main;

    17、描述Nginx支持PHP页面的解析的两种方式?
    一:nginx将php请求转向别的lamp服务器
    二:nginx调用php-fpm模块处理php页面

    18、描述Nginx调用FPM时,配置优化项有哪些?
    proxy_pass角度:反向代理请求,更多的是优化nginx负载均衡算法,使其请求
    更合理的分配给其他节点服务器。

    FPM角度:从fpm角度,更多的是优化php-fpm.conf文件参数,比如优化启动创建进程数量
    ,设置最大空闲进程数量和设置最小空闲进程数量。

    PHP角度:
    在php.ini配置文件配置 ZendGuardLoader.so 加速模块,
    使nginx和php在同一台机器,这样通信就减少网络占用。

    19、什么是正向代理?什么是反向代理
    正向代理:指的是客户端想去一个不能去的网站,从而把请求交给别的代理服务器
    然后代理服务器帮用户取回来内容。

    反向代理:用户发送一个请求,然后到了某台服务器,这台服务器是反向代理
    接着反向代理服务器把用户的请求转发给真正用户要去的服务器,再取回数据,
    由反向代理返回数据给用户。


    20、描述LAMP及LNMP的对比?
    LAMP:apache和php的结合,lamp结合的更加紧密,而lnmp需要fpm来连接nginx和php。
    lamp相比于lnmp更加稳定。
    lnmp占用内存较少,高并发配置比较方便。
    lamp相对占用内存资源多,适用于较小型的网站。

    21、描述Nginx优化的常见方式(10种)
    隐藏版本号,网页的缓存,nginx脚本定时切割,设置防盗链,反向代理算法,设置基准认证
    网页的压缩,设置资源防盗链,nginx的热升级,nginx的长链接,nginx的进程和cpu配置
    加入epoll模型

    22、描述Nginx如何分离PC端和手机端的页面访问?
    先默认访问的是pc端网页
    然后使用 location 的http_user_agent判断是不是手机客户端。

    23、描述Nginx实现平滑升级的过程?
    先下载新版本的nginx,然后make编译,之后把老版本的nginx配置文件改名字,
    把新版本的nginx配置文件放入老版本配置文件,然后给主进程发信号,新旧进程一起
    起来,然后主进程会关闭工作进程,然后再关闭主进程。

    24、描述Nginx实现日志切割脚本的编写思路?
    先创建pid和log存放目录变量,之后创建保存log的文件,然后判断pip是否存在,
    存在就mv把数据转移到存放日志的目录,再kill -USR1 产生新日志文件。

    25、描述Nginx实现防盗链的实现思路
    先设置信任网站valid_referers,然后none判断请求头是不是为空,为空就直接访问
    blocked ,不以hhtp://和https://开头
    然后 $invalid_referer参数判断是不是信任域名,不是的话rewrite重定向到一个空页面。


    26、如何查看CPU的型号、核心数、线程数?
    cat /proc/cpuinfo | grep 'model name' |uniq //查看cup型号
    cat /proc/cpuinfo | grep "cpu cores" | uniq //查看cpu核心数
    grep 'processor' /proc/cpuinfo | sort -u | wc -l //cpu线程数


    27、Nginx实现网站静动分离的配置思路?
    静态一般指的是html页面,动态一般是jsp,php
    可以用一组nginx服务器做反向代理
    然后判断是静态页面就往真实nginx服务器放
    判断是jsp,就往tomcat服务器放请求。

    28、Nginx location匹配规则方式及匹配优先级?
    location = 》》 location 全路径 》》 localtion ^~ 》》 location 正则 》》
    location 部分路径 》》 location / 通用匹配

    29、Nginx生产环境中location匹配配置实际建议?
    最少要有通用匹配,和对静态页面处理,动态页面处理

    30、Nginx Rewrite语法及标志位有哪些?

    1、语法:rewrite regex(表达式) replacement(替换项) flag(标志位)。

    http://www.sbc.com/qwe/s/1.html
    if ( $http_user ~ Chrom ) {
    rewrite ^(.*)$ /sssss/$1 break;
    }

    ^(.*)$匹配/qwe/s/1.html部分,把http://www.sbc.com/qwe/s/1.html
    访问路径改为:http://www.sbc.com/sssss/qwe/s/1.html

    31、什么是301、什么是302?
    301:永久重定向
    302:暂时重定向

    32、通过rewrite实现所有对www.360buy.com的访问rewrite到www.jd.com

    用 if判断 ($host "www.source.com") 输入的主机是不是 www.source.com 
    如果是 再拿rewrite重定向到 www.jd.com

    if ($host = "www.360buy.com") {
    rewrite (.*) http://www.jd.com;
    }

  • 相关阅读:
    Web大文件上传断点续传解决方案
    STL 源代码剖析 算法 stl_algo.h -- rotate
    BZOJ 1260 CQOI2007 涂色paint 动态规划
    Shiro学习(总结)
    数组与指针
    Doing Homework again(杭电1789)
    leetCode 75.Sort Colors (颜色排序) 解题思路和方法
    hdu 4786 Fibonacci Tree(最小生成树)
    Havel--Hakimi定理推断可图化 python
    最近小感——一个残疾人写的操作系统
  • 原文地址:https://www.cnblogs.com/CMX_Shmily/p/11599801.html
Copyright © 2020-2023  润新知