1. 什么是ngnix

ngnix是一个轻量级的反向代理web服务器,能支持上万的并发连接。可以通过不同的负载均衡算法来解决请求量过大的问题。

2. nginx的好处和作用

  1. 跨平台、配置简单
  2. ※支持高并发连接(支持负载均衡,官方描述一个支持5万访问)、
  3. 稳定性高(很少宕机)
  4. 内存消耗小(10~20M)
  5. nginx内置健康检查功能,如果有服务器宕机 再发送的请求 就不会发送到宕机的服务器了。
  6. 节省宽带(支持GZIP压缩)
  7. 接收用户请求是异步的(异步非阻塞的处理机制:提供队列排队解决——这也是ngnix性能非常高的原因)
  8. 反向代理
  9. 高扩展性
  10. 开源
  11. 可以用一台服务器虚拟出很多个网站

    什么是负载均衡(Load Balancing)? 将工作负载分布到多个服务器来提高网站、应用等服务的性能和可靠性。

    什么是正向代理和反向代理? 正向代理:客户端知道要到达的目标服务器,发送请求到一个代理服务器让其到达目标服务器(如翻墙)。 反向代理:请求统一被nginx接收,然后nginx的反向代理服务器按照一定规则再分发给后端的业务处理服务器。(反向代理隐藏了源服务器,比较安全)

缺点:动态页面处理比较差。

参考:https://www.nginx.org.cn/article/detail/451


Apache与nginx的异同及优缺点比较
apache同步多进程(一个连接对应一个进程),ngnix异步;
apache比较适合配上php,ngnix需要配合其他后端;
apache做动态比较合适;
apache配置没有ngnix简洁。

3. 安装部署

参考:nginx安装及其配置详细教程

1 安装编译工具和库文件

  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进行页面解析的?

3034ebd4ded24579b0ce725797571b86.png
1.Nginx支持fastCGI功能(默认支持)
2.PHP编译时开启FPM服务(编译时指定)
3.在Nginx配置文件中添加匹配规则(匹配后缀是.php)

10.3 请描述Nginx和Tomcat之间的数据传输过程

b61296d373034f33843108ef940ef9d0.png