Linux运维工程师笔试题第十套

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux运维工程师笔试题第十套相关的知识,希望对你有一定的参考价值。

1、nginx是如何实现高并发的?

service nginx start之后,然后输入#ps -ef|grep nginx,会发现Nginx有一个master进程和若干个worker进程,这些worker进程是平等的,都是被master fork过来的。在master里面,先建立需要listen的socket(listenfd),然后再fork出多个worker进程。当用户进入nginx服务的时候,每个worker的listenfd变的可读,并且这些worker会抢一个叫accept_mutex的东西,accept_mutex是互斥的,一个worker得到了,其他的worker就歇菜了。而抢到这个accept_mutex的worker就开始“读取请求--解析请求--处理请求”,数据彻底返回客户端之后(目标网页出现在电脑屏幕上),这个事件就算彻底结束。

nginx用这个方法是底下的worker进程抢注用户的要求,同时搭配“异步非阻塞”的方式,实现高并发量。

【评析】在nginx.conf里第二行就是work_process,有默认是4的,也可以更改成auto,这个值不是越大越好,要可实际服务器CPU的情况而定,一般是CPU有几个,工作进程就有几个。

2、编写一个Nginx的access模块,要求准许192.168.3.29/24的机器访问,准许10.1.20.6/16这个网段的所有机器访问,准许34.26.157.0/24这个网段访问,除此之外的机器不准许访问。

location/{

access 192.168.3.29/24;

access 10.1.20.6/16;

access 34.26.157.0/24;

deny all;

}

【评析】防火墙是层层深入的,可以从硬件上用acl(访问控制列表)实现,如果没有钱买一个防火墙,那么还可以在linux上设置iptables,如果iptables不设置,还可以在nginx上设置。

nginx本身工作很少,内部的各个模块是实际的参与工作的,模块英文信息:http://nginx.org/en/docs/


3、给favicon.ico和robots.txt设置过期时间; 这里为favicon.ico为99天,robots.txt为7天并不记录404错误日志

location ~(favicon.ico) {
    log_not_found off;
    expires 99d;
    break;
}

location ~(robots.txt) {
    log_not_found off;
    expires 7d;
    break;
}


4、设定某个文件的浏览器缓存过期时间;这里为600秒,并不记录访问日志
location ^~ /html/scripts/loadhead_1.js {
    access_log off;
    expires 600;
    break;
}


5、只充许固定ip访问网站,并加上密码
printf "james:$(openssl passwd -crypt 123456)\n" >>/usr/local/nginx/conf/passwd
设定账号是james,密码是123456
location \ {
    allow 22.27.164.25; #允许的ipd
    deny all;
    auth_basic “KEY”; #登陆该网页的时候,会有这个“KEY”的提示,提示只能是英文,中文不识别。
    auth_basic_user_file /conf/htpasswd;
}

本文出自 “生活就是等待戈多” 博客,转载请与作者联系!

以上是关于Linux运维工程师笔试题第十套的主要内容,如果未能解决你的问题,请参考以下文章

Linux运维工程师笔试题第十三套

Linux运维工程师经典笔试题30道

系统运维工程师笔试题总结

系统运维工程师笔试题总结

系统运维工程师笔试题总结

2019年网易运维笔试题和面试题答案