当前位置:首页>python>每日Python面试题 · 第4期

每日Python面试题 · 第4期

  • 2026-10-11 07:10:20
每日Python面试题 · 第4期

可以基于你这篇文章设计一道中高级 Nginx 面试题,既能考察基础知识,又能考察实际项目经验。

面试题

假设你有一个 Flask 项目运行在 127.0.0.1:8080,现在需要通过 Nginx 对外提供服务,同时满足以下要求:

  1. 用户访问 http://example.com 时,能够访问 Flask 项目;
  2. /static/
     路径下的静态资源由 Nginx 直接处理,不经过 Flask;
  3. 对接口请求进行限流,每个 IP 每秒最多访问 5 次;
  4. 配置 HTTPS;
  5. 当后端 Flask 服务挂掉时,用户看到友好的错误页面而不是 502。

请写出大致的 Nginx 配置,并说明各个配置项的作用。

参考答案

# 限流配置
limit_req_zone $binary_remote_addr zone=api_limit:10m rate=5r/s;server {    listen 80;   server_name example.com;   # HTTP跳转HTTPS       return 301 https://$host$request_uri;   }server {    listen 443 ssl;       server_name example.com;       ssl_certificate        /etc/nginx/ssl/example.com.crt;       ssl_certificate_key /etc/nginx/ssl/example.com.key;   # 静态资源       location /static/ {           root /var/www/html;                  expires 30d;       }       # Flask服务       location / {           limit_req zone=api_limit burst=10 nodelay;                  proxy_pass http://127.0.0.1:8080;                  proxy_set_header Host $host;                  proxy_set_header X-Real-IP $remote_addr;                  error_page 502 503 504 /50x.html;    }        location = /50x.html {            root /usr/share/nginx/html;           }}

面试官可能继续追问

问题1:为什么静态资源要交给 Nginx 处理?

答案:

因为 Nginx 处理静态文件效率极高:

  • 使用异步事件驱动模型
  • 支持 sendfile
  • 占用内存少
  • 避免 Flask/Gunicorn 浪费进程处理图片、CSS、JS

所以通常:

浏览器   ↓ Nginx ├── 静态资源 → 直接返回 └── 动态请求 → Flask

问题2:什么是反向代理?

答案:

客户端不知道真实后端服务器是谁。

用户 ↓Nginx ↓Flask
用户始终访问:
example.com
实际上请求被 Nginx 转发到:
127.0.0.1:8080

这就是反向代理。


问题3:location 匹配优先级是什么?

标准答案:

=      精确匹配^~     最长前缀匹配~ ~*   正则匹配普通前缀匹配
面试时建议回答:
精确匹配(=)↓最长前缀(^~)↓正则匹配(~、~*)↓普通前缀匹配

并说明:

在多个普通前缀中,会先选择最长匹配的前缀。

这是很多候选人容易答错的地方。

问题4:为什么修改配置后通常执行:
nginx -tnginx -s reload

而不是 restart?

答案:nginx -t

先检查配置文件语法。
nginx -s reload

平滑重载:

  • 新 worker 加载新配置
  • 老 worker 处理完现有请求再退出
  • 用户无感知

而:

systemctl restart nginx
会直接重启服务,可能导致短暂中断。

加分题(很多高级面试会问)

假设:

worker_processes 4;events {    worker_connections 1024;}

理论最大并发连接数是多少?

答案:4 × 1024 = 4096

但实际还会受到:

  • CPU
  • 文件描述符限制(ulimit)
  • 网络带宽
  • KeepAlive连接数

等因素影响,因此实际并发通常低于理论值。


这道题基本覆盖了 Nginx 面试最爱考的五个核心点:

✅ 反向代理✅ 负载均衡思想✅ location 匹配规则✅ 静态资源优化✅ 限流与高并发处理

最新文章

随机文章