1、请列出 nginx 常用模块的各个优缺点以及区别
ngx_http_auth_basic_module:实现基于用户的访问控制,使用basic机制进行用户认证,优点:使用登陆对话框的方式实现用户认证,缺点:认证文件依赖httpd-tools软件包。
ngx_http_stub_status_module:http状态统计,优点:可以查看http活动状态连接数、总连接数、成功的连接数、总共处理的请求数等,缺点:需要单独写个location。
ngx_http_ssl_module:用于nginx支持https协议,优点:支持自签名证书和通配符证书,缺点:使用低版本openssl有安全漏洞。
ngx_http_rewrite_module:用于实现uri重写,优点:能以多种方式改变URI实现地址重写,缺点:指令、变量、标志位众多。
2、请写出用户通过 nginx 访问的工作过程
1)、浏览器输入网址,通过DNS服务器将域名解析成IP地址。
2)、IP地址路由到nginx服务器,经过TCP三次握手后发送http请求报文。
3)、nginx服务器收到请求报文后,根据资源类型将处理请求直接处理或转发给后端服务器。
4)、后端服务器将处理结果返回给nginx服务器。
5)、nginx服务器将响应报文发给客户端,通过四次挥手关闭TCP连接,完成响应请求。
6)、用户浏览器呈现响应页面。
3、请写出实现 nginx-https 访问得步骤过程
1)、如果是编译安装,需要添加--with-http_ssl_module。
2)、生成自签名证书或者向ssl证书颁发机构申请ssl证书。
3)、nginx配置文件中增加虚拟主机,侦听443端口开启ssl并指定ssl证书位置。
4)、使用nginx -t检查配置文件,没有错误信息就执行nginx -s reload重新加载配置文件。
4、请写出隐藏 Nginx 版本号得过程
编辑nginx.conf文件,在http模块下面加入server_tokens off;执行nginx -s reload即可生效。
5、请写出 nginx 各种优化参数。以及每个参数得作用是什么
worker_processes auto; 启动进程,设置成和cpu的核数相等,auto为自动判断。
worker_cpu_affinity auto; 为每个进程分配CPU,auto为自动分配。
worker_rlimit_nofile 65535; 一个nginx进程能打开的最多文件描述符数目。
worker_connections 65535; 单个worker_process进程的最大并发连接数。
use epoll; 使用epoll模式。
multi-accept on; 尽可能多地接受请求。
tcp_nopush on; 防止网络阻塞。
tcp_nodelay on; 提高数据的实时响应
client_max_body_size 10MB; 允许客户端请求的最大单文件字节数。
client_header_buffer_size 4k; 客户端请求头部的缓冲区大小。
autoindex on; 开启目录列表,适合文件下载,默认关闭。
open_file_cache max=65535 inactive=60s; 为打开文件指定缓存,默认没有启用,max指定缓存数量,建议和最大文件描述符一致,inactive是指经过多长时间文件没被请求后删除缓存。