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;
}
Nginx笔试题!的更多相关文章
- Java 工程师面试题和笔试题整理(一)
根据自己之前收集的还有一部分自己面试的整理出来,希望能帮到面试的兄弟(2017). 海科融通 笔试题 1.有一个字符串,如果要在其中查找一个子串,都有哪些方式,写出你认为最好的一个. 2.写出线程都有 ...
- 对Thoughtworks的有趣笔试题实践
记得2014年在网上看到Thoughtworks的一道笔试题,当时觉得挺有意思,但是没动手去写.这几天又在网上看到了,于是我抽了一点时间写了下,我把程序运行的结果跟网上的答案对了一下,应该是对的,但是 ...
- 从阿里巴巴笔试题看Java加载顺序
一.阿里巴巴笔试题: public class T implements Cloneable { public static int k = 0; public static T t1 = new T ...
- 我设计的ASP.NET笔试题,你会多少呢
本笔试题考查范围包括面向对象基础.HTML.CSS.JS.EF.jQuery.SQL.编码思想.算法等范围. 第1题:接口和抽象类有何区别? 第2题:静态方法和实例方法有何区别? 第3题:什么是多态? ...
- C#经典笔试题-获取字符串中相同的字符以及其个数
public Dictionary<char,int> GetStrSameAs(string str){ //将字符串转换成一个字符数组. char[] charArray=str.To ...
- flhs笔试题-回家上机实践
这是最近参加的一个公司的笔试题,回家上机写了下代码,希望对有需要的小伙伴有用,简单实现字符串和数组在指定位置的插入: package org.flhs; import com.google.commo ...
- 也许你需要点实用的-Web前端笔试题
之前发的一篇博客里没有附上答案,现在有空整理了下发出来,希望能帮助到正在找工作的你,还是那句话:技术只有自己真正理解了才是自己的东西,共勉. Web前端笔试题 Html+css 1.对WEB标准以及w ...
- [c#基础]关于try...catch最常见的笔试题
引言 在翻看之前总结的常见面试题中,关于try...catch异常处理的还是蛮多了,今天看到这个面试题,也就重新学习一下. try..catch语法 try-catch语句由一个try块后跟一个或多个 ...
- js作用域之常见笔试题,运行结果题
笔试题中经常有运行结果题,而大多体型都是围绕作用域展开,下面总结了几种相关的题: 外层的变量函数内部可以找到,函数内部的变量(局部变量)外层找不到. function aaa() { var a = ...
随机推荐
- C语言合法标识符 题解
输入一个字符串,判断其是否是C的合法标识符. Input输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行是一个长度不超过50的字符串. Output对 ...
- Unity相机鼠标基本控制
一.滚轮控制视角缩放 /// <summary> /// 滚轮控制相机视角缩放 /// </summary> public void CameraFOV() { //获取鼠标滚 ...
- C++ split分割字符串函数
将字符串绑定到输入流istringstream,然后使用getline的第三个参数,自定义使用什么符号进行分割就可以了. #include <iostream> #include < ...
- angular清空node_modules
安装全局包 npm install rimraf -g 执行清空命令 rimraf node_modules
- 树链剖分-Hello!链剖-[NOIP2015]运输计划-[填坑]
This article is made by Jason-Cow.Welcome to reprint.But please post the writer's address. http://ww ...
- Codeforces Round #599 (Div. 2) B2. Character Swap (Hard Version)
This problem is different from the easy version. In this version Ujan makes at most 2n2n swaps. In a ...
- 数据库程序接口——JDBC——功能第五篇——批量处理
综述 批量处理一般指批量插入,批量更新,删除通过可以指定where条件实现.批量插入的实现方式有三种类型.statement,preparedStatement,callableStatement. ...
- ALSA driver--PCM实例创建框架
在介绍PCM 之前,我们先给出创建PCM实例的框架. #include <sound/pcm.h> .... /* hardware definition */ static struct ...
- via/route blockage/size blockage/wire/pin guide/pin blockage/partition
1.via 中文名称互连线通孔.我们知道,芯片的连线有不同层的金属互连线相互连接.而Via的作用就是连接这些不同层的金属.如下图所示: 一个完整的通孔是由三层组成的,包括两个互连层和一个cut层,cu ...
- redis环境搭建学习笔记
学习环境为windows.java环境 一.学习教程: 1.菜鸟教程:http://www.runoob.com/redis/redis-tutorial.html 2.redis中文网:http:/ ...