当前位置: 首页 > article >正文

Nginx应用场景详解与配置指南

1. 什么是Nginx?

Nginx(发音为"engine-x")是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。它以高性能、稳定性、丰富的功能集、简单的配置和低资源消耗而闻名。

2. Nginx的主要应用场景

2.1 静态资源服务器

Nginx最基础的应用场景是作为静态资源服务器,用于提供静态文件(如HTML、CSS、JavaScript、图片等)的访问。

配置示例:

server {listen 80;server_name example.com;root /var/www/html;# 开启gzip压缩gzip on;gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;# 缓存设置location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {expires 30d;add_header Cache-Control "public, no-transform";}# 安全设置location / {try_files $uri $uri/ =404;add_header X-Frame-Options "SAMEORIGIN";add_header X-XSS-Protection "1; mode=block";}
}

2.2 反向代理服务器

Nginx作为反向代理服务器,可以将客户端请求转发到后端服务器,实现负载均衡和请求分发。

配置示例:

upstream backend {server 192.168.1.10:8080 weight=5;server 192.168.1.11:8080 weight=5;server 192.168.1.12:8080 backup;  # 备用服务器
}server {listen 80;server_name example.com;location / {proxy_pass http://backend;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;# 超时设置proxy_connect_timeout 60s;proxy_send_timeout 60s;proxy_read_timeout 60s;}
}

2.3 负载均衡

Nginx提供了多种负载均衡算法,包括轮询、权重、IP哈希等。

配置示例:

upstream backend {# 轮询(默认)server 192.168.1.10:8080;server 192.168.1.11:8080;# 权重server 192.168.1.12:8080 weight=3;server 192.168.1.13:8080 weight=2;# IP哈希ip_hash;server 192.168.1.14:8080;server 192.168.1.15:8080;# 最少连接least_conn;server 192.168.1.16:8080;server 192.168.1.17:8080;
}

2.4 SSL/TLS终端

Nginx可以作为SSL/TLS终端,处理HTTPS请求。

配置示例:

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;# SSL配置优化ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;ssl_prefer_server_ciphers off;# HSTS设置add_header Strict-Transport-Security "max-age=63072000" always;# OCSP Staplingssl_stapling on;ssl_stapling_verify on;resolver 8.8.8.8 8.8.4.4 valid=300s;resolver_timeout 5s;
}

2.5 缓存服务器

Nginx可以作为缓存服务器,提高网站性能。

配置示例:

# 定义缓存区域
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;server {listen 80;server_name example.com;location / {proxy_cache my_cache;proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504;proxy_cache_valid 200 60m;proxy_cache_valid 404 1m;proxy_pass http://backend;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}
}
2.6 限流控制

Nginx可以实现请求限流,防止服务器过载。

配置示例:

# 定义限流区域
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;server {listen 80;server_name example.com;location / {limit_req zone=one burst=5 nodelay;proxy_pass http://backend;}
}

2.7 动静分离

Nginx可以实现静态资源和动态请求的分离。

配置示例:

server {listen 80;server_name example.com;# 静态资源location /static/ {root /var/www/html;expires 30d;add_header Cache-Control "public, no-transform";}# 动态请求location / {proxy_pass http://backend;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}
}

3. 高级特性

3.1 日志配置

# 访问日志格式定义
log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';# 错误日志
error_log /var/log/nginx/error.log warn;# 访问日志
access_log /var/log/nginx/access.log main;

3.2 安全配置

server {# 基本安全头add_header X-Frame-Options "SAMEORIGIN" always;add_header X-XSS-Protection "1; mode=block" always;add_header X-Content-Type-Options "nosniff" always;add_header Referrer-Policy "no-referrer-when-downgrade" always;add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'" always;# 禁止访问隐藏文件location ~ /\. {deny all;}
}

4. 性能优化建议

  1. 开启gzip压缩
  2. 配置适当的缓存策略
  3. 使用sendfile和tcp_nopush
  4. 调整worker_processes和worker_connections
  5. 配置适当的keepalive设置
  6. 使用HTTP/2
  7. 优化SSL配置

5. 监控和维护

  1. 使用Nginx Status模块监控
  2. 配置日志轮转
  3. 定期检查配置文件语法
  4. 监控服务器资源使用情况
  5. 设置适当的告警机制

6. 总结

Nginx是一个功能强大的Web服务器,通过合理的配置可以满足各种应用场景的需求。本文介绍了Nginx的主要应用场景和配置示例,包括静态资源服务、反向代理、负载均衡、SSL终端、缓存服务、限流控制等。通过合理使用这些功能,可以构建高性能、高可用的Web应用系统。

http://www.lryc.cn/news/2378436.html

相关文章:

  • vue2 切换主题色以及单页面好使方法
  • React学习———CSS Modules(样式模块化)
  • MCP 与 Cloudflare 的结合:网络安全的新高度
  • JavaScript入门【1】概述
  • PyQt5 的使用
  • JavaScript【6】事件
  • STM32F10xx 参考手册
  • 使用Docker部署Nacos
  • 深度学习中ONNX格式的模型文件
  • TIFS2024 | CRFA | 基于关键区域特征攻击提升对抗样本迁移性
  • Redis 发布订阅模式深度解析:原理、应用与实践
  • 环形缓冲区 ring buffer 概述
  • 飞帆控件 post or get it when it has get
  • SQL里where条件的顺序影响索引使用吗?
  • SAP学习笔记 - 开发豆知识02 - com.sap.cds.services.cds.CdsService 废止,那么用什么代替呢?
  • OpenResty 深度解析:构建高性能 Web 服务的终极方案
  • 什么是路由器环回接口?
  • OpenHarmony:开源操作系统重塑产业数字化底座
  • 【MySQL进阶】如何在ubuntu下安装MySQL数据库
  • 【数据结构】_二叉树
  • 给图表组件上点“颜色” —— 我与 CodeBuddy 的合作记录
  • 使用 YOLO 结合 PiscTrace 实现股票走势图像识别
  • OpenCV中的光流估计方法详解
  • OpenCL C++ 常见属性与函数
  • Android核心系统服务:AMS、WMS、PMS 与 system_server 进程解析
  • 18.自动化生成知识图谱的多维度质量评估方法论
  • 【行为型之命令模式】游戏开发实战——Unity可撤销系统与高级输入管理的架构秘钥
  • 图论模板(部分)
  • LeetCode 热题 100_寻找重复数(100_287_中等_C++)(技巧)(暴力解法;哈希集合;二分查找)
  • NBA足球赛事直播源码体育直播M33模板赛事源码