nginx 面试知识点

1、nginx使用哪些指令进行负载均衡(upstream七层,stream四层)

upstream aaa{
server 127.0.0.1
server 127.0.0.2
}

stream {
upstream redis{
server 127.0.0.1:6381 max_fails=2 fail_timeout=10s;
server 127.0.0.1:6382 max_fails=2 fail_timeout=10s;
}
server{
listen 6379;
proxy_timeout 3s;
proxy_pass redis;
}
}

2、负载均衡策略

轮询:
upstream back{
server 127.0.0.1
server 127.0.0.2
}

权重:
upstream back{
server 127.0.0.1 weight=5;
server 127.0.0.1 weight=10;
}

ip_hash:
upstream back{
ip_hash;
server 127.0.0.1:88;
server 127.0.0.2:80;
}

fair:后端相应时间长短来分配
url_hash:url哈希,每个url定向到同一个后端,后端有缓存效率高

3、root和alias的区别

location /aaa/{
root /home/www/;
}
访问aaa/匹配对应的是/home/www/aaa/

location /bbb/{
alias /home/www/;
}
访问bbb/匹配对应是路径是/home/www/,结尾必须加斜杠

4、日志中检查前10的ip

cat access.log|awk '{print $1}'|sort|uniq -c|sort -klnr|head -n 10

5、如何保证高并发

异步非阻塞 epoll 一个master 管理、监控多个worker进程
每个请求进入之后,会有一个worker处理,处理到有阻塞的时候(发送请求到后端等待回应),注册标记时间,待可解除阻塞(后端相应)的时候,标记激活继续处理。

6、nginx 为何不用多线程

单线程 采用异步非阻塞处理请求,不必为每个请求创建一个线程,节约资源cpu\内存开支,减少cpu的上下文切换。

7、常见优化配置

worker_process 工作进程,一般和cpu核心数对应
worker_connections 最大客户端数,工作进程数1024,1024为每个核心允许的最大进程数
gzip压缩 gzip on 开启之后减少客户端传输带宽,提高页面加载速度
事件指定模型
events{
use epoll;
worker_connections 51200;
multi_accept on;
}
静态文件缓存
location ~
.(jpg|jpeg|css|js)${
expires 7d;
}
keepalive相关超时时间
client_body_timeout 12;
client_header_timeout 12;
keepalive_timeout 15;
send_timeout 10;
access_log些缓冲区
access_log /var/log/nginx/access.log main buffer=32k flush=1m
32k缓存区大小,缓冲时间为1分钟

8、502报错

fastcgi 进程是否启动
fastcgi worker 进程数是否不够
fastcgi 执行时间过长
fastcgi buffer 不够(fastcgi_buffer_size 32k;fastcgi_buffers 8 32K)
proxy buffer 不够(proxy_buffer_size 16k;proxy_buffer 4 16K)
php脚本执行时间过长

posted @ 2020-12-05 17:35  乌鸦yy  阅读(195)  评论(0)    收藏  举报