本篇整理了 2021 年常见的 Nginx 面试题,并附带详细解答,帮助你快速掌握 Nginx 相关知识。

1. 请简述 Nginx 的反向代理和负载均衡功能。

答案:

  • 反向代理: Nginx 作为客户端和目标服务器之间的中间层,接收客户端请求并转发给后端服务器,并将服务器响应返回给客户端。
  • 负载均衡: Nginx 可以根据配置的算法,将请求分发到不同的后端服务器,实现流量分担,提高系统可用性和性能。

2. Nginx 常用的负载均衡策略有哪些?

答案:

  • 轮询 (round-robin): 按顺序逐个分配请求。
  • 权重 (weight): 根据服务器权重分配不同比例的请求。
  • IP 哈希 (ip_hash): 根据客户端 IP 地址进行哈希运算,将同一 IP 的请求分配到同一服务器。
  • 最少连接 (least_conn): 将请求分配给当前连接数最少的服务器。

3. 如何配置 Nginx 实现动静分离?

答案:

可以使用 location 指令根据请求 URI 进行匹配,将静态文件请求直接由 Nginx 处理,动态请求转发给后端应用服务器。

location /static/ {
    root /var/www/html;
}

location / {
    proxy_pass http://backend;
}

4. 解释一下 Nginx 中 worker_processes 和 worker_connections 的作用。

答案:

  • worker_processes: 定义 Nginx 启动的工作进程数,建议设置为 CPU 核心数。
  • worker_connections: 定义每个工作进程的最大连接数。

5. 如何配置 Nginx 实现 HTTPS 访问?

答案:

需要在 Nginx 配置文件中配置 SSL 证书和密钥,并启用 HTTPS 监听端口。

server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate /path/to/certificate.crt;
    ssl_certificate_key /path/to/private.key;

    # ... 其他配置 ...
}

6. 请列举一些常用的 Nginx 模块。

答案:

  • ngx_http_core_module
  • ngx_http_access_module
  • ngx_http_rewrite_module
  • ngx_http_proxy_module
  • ngx_http_fastcgi_module
  • ngx_http_upstream_module
  • ngx_http_gzip_module

7. 如何查看 Nginx 的访问日志和错误日志?

答案:

  • 访问日志: 默认路径为 /var/log/nginx/access.log/usr/local/nginx/logs/access.log
  • 错误日志: 默认路径为 /var/log/nginx/error.log/usr/local/nginx/logs/error.log

8. 如何测试 Nginx 配置文件是否正确?

答案:

可以使用 nginx -t 命令进行语法检查。

9. 如何平滑重启 Nginx?

答案:

可以使用 nginx -s reload 命令。

10. Nginx 如何处理静态文件请求?

答案:

Nginx 可以直接处理静态文件请求,无需经过后端应用服务器,提高响应速度。

总结

以上是 Nginx 常用面试题的解析,希望对你有所帮助。