性能

内容缓存

允许浏览器基本上永久地缓存静态内容。 Nginx将为您设置Expires和Cache-Control头信息。

  1. location /static {
  2. root /data;
  3. expires max;
  4. }

如果要求浏览器永远不会缓存响应(例如用于跟踪请求),请使用-1。

  1. location = /empty.gif {
  2. empty_gif;
  3. expires -1;
  4. }

Gzip压缩

  1. gzip on;
  2. gzip_buffers 16 8k;
  3. gzip_comp_level 6;
  4. gzip_http_version 1.1;
  5. gzip_min_length 256;
  6. gzip_proxied any;
  7. gzip_vary on;
  8. gzip_types
  9. text/xml application/xml application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml
  10. text/javascript application/javascript application/x-javascript
  11. text/x-json application/json application/x-web-app-manifest+json
  12. text/css text/plain text/x-component
  13. font/opentype application/x-font-ttf application/vnd.ms-fontobject
  14. image/x-icon;
  15. gzip_disable "msie6";

打开文件缓存

  1. open_file_cache max=1000 inactive=20s;
  2. open_file_cache_valid 30s;
  3. open_file_cache_min_uses 2;
  4. open_file_cache_errors on;

SSL缓存

  1. ssl_session_cache shared:SSL:10m;
  2. ssl_session_timeout 10m;

上游Keepalive

  1. upstream backend {
  2. server 127.0.0.1:8080;
  3. keepalive 32;
  4. }
  5. server {
  6. ...
  7. location /api/ {
  8. proxy_pass http://backend;
  9. proxy_http_version 1.1;
  10. proxy_set_header Connection "";
  11. }
  12. }

监控

使用ngxtop实时解析nginx访问日志,并且将处理结果输出到终端,功能类似于系统命令top。所有示例都读取nginx配置文件的访问日志位置和格式。如果要指定访问日志文件和/或日志格式,请使用-f和-a选项。

注意:在nginx配置中/usr/local/nginx/conf/nginx.conf日志文件必须是绝对路径。

  1. # 安装 ngxtop
  2. pip install ngxtop
  3. # 实时状态
  4. ngxtop
  5. # 状态为404的前10个请求的路径:
  6. ngxtop top request_path --filter 'status == 404'
  7. # 发送总字节数最多的前10个请求
  8. ngxtop --order-by 'avg(bytes_sent) * count'
  9. # 排名前十位的IP,例如,谁攻击你最多
  10. ngxtop --group-by remote_addr
  11. # 打印具有4xx或5xx状态的请求,以及status和http referer
  12. ngxtop -i 'status >= 400' print request status http_referer
  13. # 由200个请求路径响应发送的平均正文字节以'foo'开始:
  14. ngxtop avg bytes_sent --filter 'status == 200 and request_path.startswith("foo")'
  15. # 使用“common”日志格式从远程机器分析apache访问日志
  16. ssh remote tail -f /var/log/apache2/access.log | ngxtop -f common