linux运维工程师面试常见问题整理2--nginx相关

1. nginx 优化

nginx常用优化内容主要包括如下内容:

1.隐藏版本信息

2.隐藏nginx要修改的源代码

3.更改nginx服务的默认用户

4.降权启动nginx

5.优化nginx进程个数

6.绑定不同的nginx进程到不同的CPU上

7.Nginx事件处理模型优化

8.调整nginx单个进程允许的客户端最大连接数

扫描二维码关注公众号,回复: 4031029 查看本文章

9.配置nginx worker进程对打打开文件数

10.开启高效文件传输模式

11.Nginx gzip压缩实现性能优化

12.编写脚本实现日志轮询

13.不记录不需要的日志

14.访问日志的权限设置

15.根据扩展名限制程序和文件访问

16.禁止访问指定目录下的所有文件和目录

17.限制网站来源的IP访问

18.配置nginx禁止非法域名解析访问企业网站

19.nginx防爬虫优化

20.控制nginx并发连接数量

2. nginx 模块有哪一些

nginx的模块从结构上分为3种:

核心模块:HTTP模块,EVENT模块,MAIL模块。

基础模块:HTTPAccess模块,HTTP FastCGI模块,HTTP Proxy模块,HTTP Rewrite模块。

第三方模块:HTTP Upstream Hash模块,Notice模块,HTTP Access Key模块。 

从功能上分为3种:

Handles(处理器模块):直接处理请求,并进行输出内容和修改headers信息,Handles处理器模块一般只能有一个。

Filters(过滤器模块):对其他处理器模块输出内容进行修改操作。最后由Nginx输出。 

Proxies(代理类模块):与后端一些服务,比如FastCGI进行交互。实现服务代理和负载均衡等功能。

3. nginx 数据算法有哪一些

如果记不住,请飞往 nginx4种负载均衡算法速记及详解

1.轮询(默认):

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,则自动剔除故障机器,使用户访问不受影响

2.weight:

指定轮询权重,weight值越大,分配到的几率就越高,主要用于后端每台服务器性能不均衡的情况。

3.ip_hash:

每个请求按访问IP的哈希结果分配,这样每个访客固定访问一个后端服务器,可以有效的解决动态网页存在的session共享问题。

4.fair(第三方):

更智能的一个负载均衡算法,此算法可以根据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。如果想要使用此调度算法,需要Nginx的upstream_fair模块。

5.url_hash(第三方):

按访问URL的哈希结果来分配请求,使每个URL定向到同一台后端服务器,可以进一步提高后端缓存服务器的效率。如果想要使用此调度算法,需要Nginx的hash软件包。

4. nginx 日志需要怎么进行切割

#!/bin/sh
   set -x
   logs_path="/usr/local/nginx/logs"
   oldlogs_path="/nginx_oldlogs/"

   for i in `ls $logs_path/* |grep -v nginx.pid |grep -v oldlogs`
   ​        do
   ​        mv "$i"  "$i"_${HOS}_$(date -d "yesterday" +"%Y%m%d")
   ​        mv "$i"_${HOS}_$(date -d "yesterday" +"%Y%m%d")  $oldlogs_path
   done

   #向nginx主进程发信号重新打开日志
   nginx_pid= `ps -ef |grep nginx|grep master|awk '{print $1}'`
   kill -USR1 $nginx_pid
   /usr/local/nginx/sbin/nginx -t && /usr/local/nginx/sbin/nginx -s reload

   sleep 2
   #docker exec -it tengine  /usr/local/nginx/sbin/nginx -s reopen

   #sleep 1 

   #clear the expired logs
   cd $oldlogs_path
   #find ./ -mtime +90 -exec rm -rf {} \;
   echo "The old logfiles is deleted!!"

目的:对日志进行管理,结合cron每天进行切割,
1.定义日志的位置,及存储的位置。
2.对日志进行重新命名 移动到指定的位置
3.向nginx主进程发信号重新打开日志
4.对旧的日志进行删除处理

5. nginx 怎么自定义403错误界面

首先打开nginx.conf文件,在fastcgi_temp_file_write_size 128k; 下面添加

fastcgi_intercept_errors on;注意,包括;号

然后在需要定义的站点的里面添加

error_page 403 = /403.htm;
例如:
复制代码 代码如下:

   server 
   { 
   listen 80; 
   server_name www.deepvps.com; 
   index index.html index.htm index.php; 
   error_page 403 = /403.htm; 
   include location.conf; 
   root /home/www/logs; 
   } 

记得403页面放在站点的跟目录下…

测试配置

   /usr/local/nginx/sbin/nginx -t 

没错误就重启nginx

   /etc/init.d/nginx restart 

BTW,其他页面也是这样定义

error_page 502 = /502.htm;

6. nginx 平滑重启命令是什么

重启之前,需要确认Nginx配置文件的语法是否正确,否则,Nginx不会加载新的配置文件。

通过以下命令检查配置文件是否正确


/user/local/webserver/nginx/sbin/nginx –t –c

/user/local/webserver/nginx/conf/nginx.conf 

此时,就可以平滑重启Nginx了,如下 :

 kill –HUP Nginx 主进程号 Kill – HUP‘/user/local/webserver/nginx/logs/nginx.pid’  

7. nginx 配置检查命令有哪些

nginx -t命令

-t:测试配置文件是否正确,在运行时需要重新加载配置的时候,此命令非常重要,用来检测所修改的配置文件是否有语法错误。

8. nginx 和apache 的区别有哪一些,各有什么区别?

1. nginx 相对 apache 的优点:

  • 轻量级,同样起web 服务,比apache 占用更少的内存及资源
  • 抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能
  • 高度模块化的设计,编写模块相对简单
  • 社区活跃,各种高性能模块出品迅速啊

2.apache 相对nginx 的优点:

  • rewrite ,比nginx 的rewrite 强大
  • 模块超多,基本想到的都可以找到
  • 少bug ,nginx 的bug 相对较多
  • 超稳定

9. nginx 负载和 LVS 有什么区别

LVS特点:
1.抗负载能力强,使用IP负载均衡技术,只做分发,所以LVS本身并没有多少流量产生;
2.稳定性、可靠性好,自身有完美的热备方案;(如:LVS+Keepalived)
3.应用范围比较广,可以对所有应用做负载均衡;
4.不支持正则处理,不能做动静分离。
常用四种算法:
1.rr:轮叫,轮流分配到后端服务器;
2.wrr:权重轮叫,根据后端服务器负载情况来分配;
3.lc:最小连接,分配已建立连接最少的服务器上;
4.wlc:权重最小连接,根据后端服务器处理能力来分配。

Nginx特点:
1.工作在7层,可以对做正则规则处理;(如:针对域名、目录进行分流)
2.配置简单,能ping通就能进行负载功能,可以通过端口检测后端服务器状态,不支持url检测;
3.抗高并发,采用epoll网络模型处理客户请求;
4.只支持HTTP和EMail,应用范围比较少;
5.nginx主要是HTTP和反向代理服务器,低系统资源消耗。
常用四种算法:
1.RR:(默认)轮询,轮流分配到后端服务器;
2.weight:根据后端服务器性能分配;
3.ip_hash:每个请求按访问ip的hash结果进行分配,并发小时合适,解决session问题;
4.fair:(扩展策略),默认不被编译nginx内核,根据后端服务器响应时间判断负载情况,选择最轻的进行处理。

猜你喜欢

转载自blog.csdn.net/xzm5708796/article/details/83894986