1. 什么是ngnix
ngnix是一个轻量级的反向代理web服务器,能支持上万的并发连接。可以通过不同的负载均衡算法来解决请求量过大的问题。
2. nginx的好处和作用
- 跨平台、配置简单
- ※支持高并发连接(支持负载均衡,官方描述一个支持5万访问)、
- 稳定性高(很少宕机)
- 内存消耗小(10~20M)
- nginx内置健康检查功能,如果有服务器宕机 再发送的请求 就不会发送到宕机的服务器了。
- 节省宽带(支持GZIP压缩)
- 接收用户请求是异步的(异步非阻塞的处理机制:提供队列排队解决——这也是ngnix性能非常高的原因)
- 反向代理
- 高扩展性
- 开源
- 可以用一台服务器虚拟出很多个网站
什么是负载均衡(Load Balancing)? 将工作负载分布到多个服务器来提高网站、应用等服务的性能和可靠性。
什么是正向代理和反向代理? 正向代理:客户端知道要到达的目标服务器,发送请求到一个代理服务器让其到达目标服务器(如翻墙)。 反向代理:请求统一被nginx接收,然后nginx的反向代理服务器按照一定规则再分发给后端的业务处理服务器。(反向代理隐藏了源服务器,比较安全)
缺点:动态页面处理比较差。
参考:https://www.nginx.org.cn/article/detail/451
Apache与nginx的异同及优缺点比较
apache同步多进程(一个连接对应一个进程),ngnix异步;
apache比较适合配上php,ngnix需要配合其他后端;
apache做动态比较合适;
apache配置没有ngnix简洁。
3. 安装部署
1 安装编译工具和库文件
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel pcre pcre-devel
PERE ——
PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。
nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。
(菜鸟教程:PCRE 作用是让 Nginx 支持 Rewrite 功能。)
注:pcre-devel是使用pcre开发的一个二次开发库。nginx也需要此库。
zlib ——
zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。
openssl ——
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,
并提供丰富的应用程序供测试或其它目的使用。
nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。
2
10. 面试准备
参考:
https://hulining.github.io/2020/06/06/interview-questions-nginx/
https://blog.csdn.net/ITwang1/article/details/122092550
10.1 nginx支持的负载均衡算法有哪些?
round robin 轮询
依次将请求分配到各个后端服务器中,是 nginx 默认的负载均衡方式。
适用于后端服务器性能一致的情况。
weight 加权轮询
根据权重比率分发请求到各个后端服务器中。
使用weight指定权重。
适用于后端服务器不一致的情况。
ip_hash 客户端 IP 哈希
根据客户端IP地址的hash值将请求发送到后端服务器。
可保证来自同一个客户端的请求被转发到固定的后端服务器中,可解决 session 问题。
least_conn 最小连接数
根据后端服务器的连接数进行分发,同时考虑后端服务器的权重。
least_time 最小平均响应时间
根据后端服务器的平均响应时间及活动连接数进行分发,同时考虑后端服务器的权重。
hash key 自定义hash键轮询
根据自定义key的值进行哈希从而选择后端服务器。
key可以包含文本,变量及其组合。
random 完全随机
将请求随机转发到后端服务器,同时考虑后端服务器权重。
10.2 请解释Nginx是如何连接PHP进行页面解析的?
1.Nginx支持fastCGI功能(默认支持)
2.PHP编译时开启FPM服务(编译时指定)
3.在Nginx配置文件中添加匹配规则(匹配后缀是.php)