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

nginx常用配置 (含负载均衡、反向代理、限流、Gzip压缩、图片防盗链 等示例)

nginx的配置文件通常在 /etc/nginx/nginx.conf  ,  /etc/nginx/conf.d/*.conf 中
一般直接 改 conf.d目录下的 default.conf文件,
然后
先检测配置文件是否有错误 

nginx -t

重新加载配置文件 或 重启nginx,命令如下

nginx -s reload
或
systemctl restart nginx

1 入门

# 这是一个最基本的Nginx配置,监听80端口,并返回根目录下的index.html文件
server {
    listen 80;  # 监听80端口
    server_name localhost;  # 服务器名称为localhost

    location / {
        root /usr/share/nginx/html;  # 设置根目录为/usr/share/nginx/html
        index index.html;  # 默认返回index.html文件
    }
}

2 配置多个server块,多域名,多端口都大同小异

# 配置多个server块,分别监听不同的域名
server {
    listen 80;
    server_name girl.taobao.com;

    location / {
        root /usr/share/nginx/html/aa;  #看
        index index.html;
    }
}

server {
    listen 80;
    server_name huwai.taobao.com;

    location / {
        root /usr/share/nginx/html/bb; #看
        index index.html;
    }
}

3 配置反向代理

# 配置Nginx作为反向代理,将请求转发到后端服务器
server {
    listen 80;
    server_name huwai.taobao.com;

    location / {
        proxy_pass http://localhost:9001;  # 将请求转发到这里
        proxy_set_header Host $host;  # 设置请求头
        proxy_set_header X-Real-IP $remote_addr;  # 传递客户端真实IP
    }
}

4 配置负载均衡

# 配置Nginx作为负载均衡器,将请求分发到多个后端服务器
upstream backend {
    server 127.0.0.1:9001;  # 后端服务器1
    server 127.0.0.1:9002;  # 后端服务器2
}

server {
    listen 80;
    server_name huwai.taobao.com;

    location / {
        proxy_pass http://backend;  # 将请求转发到upstream定义的backend
    }
}

5 配置自定义错误页面,此示例中的404.html和50x.html位于/usr/share/nginx/html/   目录 下

# 配置Nginx自定义错误页面
server {
    listen 80;
    server_name huwai.taobao.com;

    location / {
        root /usr/share/nginx/html;
        index index.html;
    }

    # 自定义404错误页面
    error_page 404 /404.html;
    location = /404.html {
        root /usr/share/nginx/html;  # 看
    }

    # 自定义50x错误页面
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;  # 看
    }
}

6 配置限流

# 定义一个限流区域,每秒允许1个请求
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

server {
    listen 80;
    server_name huwai.taobao.com;

    # 设置限流状态码为503,并通过error_page指向自定义页面
    error_page 503 /50x.html;

    location / {
        limit_req zone=one burst=5 nodelay;  # 应用限流,允许突发5个请求,立即拒绝超出burst限制的请求
        root /usr/share/nginx/html;
        index index.html;
        
        # 当触发限流时返回503状态码
        limit_req_status 503;
    }

    # 配置50x错误页面的位置
    location = /50x.html {
        root /usr/share/nginx/html;
    }
}

7 负载均衡+限流

# 定义一个限流区域,每秒允许1个请求(您可以根据需要调整)
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

upstream backend {
    server 127.0.0.1:9001;  # 后端服务器1
    server 127.0.0.1:9002;  # 后端服务器2
}

server {
    listen 80;
    server_name huwai.taobao.com;

    location / {
        # 应用限流规则,使用之前定义的限流区域,并设置突发请求数量为5
        limit_req zone=one burst=5 nodelay;
        
        # 设置限流状态码为503,并通过error_page指向自定义页面
        limit_req_status 503;

        # 当触发限流时返回到自定义的503错误页面
        error_page 503 /50x.html;

        proxy_pass http://backend;  # 将请求转发到upstream定义的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;
    }

    # 配置50x错误页面的位置
    location = /50x.html {
        root /usr/share/nginx/html;  # 假设您的50x.html位于此目录下
    }
}

8 配置Gzip压缩

# 配置Nginx启用Gzip压缩,减少传输数据量
server {
    listen 80;
    server_name huwai.taobao.com;

    gzip on;  # 启用Gzip压缩
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;  # 指定压缩的文件类型

    location / {
        root /usr/share/nginx/html;
        index index.html;
    }
}

9 静态资源服务器综合配置,此示例中的404.html和50x.html位于/usr/share/nginx/html/   目录 下

server {
    listen 80;
    server_name huwai.taobao.com;

    # 设置根目录
    root /usr/share/nginx/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|webp|svg)$ {
        expires 30d;  # 设置缓存时间为30天
        add_header Cache-Control "public";  # 允许公共缓存
        add_header Pragma "public";  # 支持旧版HTTP客户端
        add_header Vary "Accept-Encoding";  # 根据Accept-Encoding头进行缓存

        # 图片防盗链配置
        valid_referers none blocked huwai.taobao.com *.huwai.taobao.com;
        if ($invalid_referer) {
            return 403;  # 如果来源不在允许列表中,返回403 Forbidden
        }
    }

    # HTML、CSS、JS缓存优化
    location ~* \.(html|css|js)$ {
        expires 7d;  # 设置缓存时间为7天
        add_header Cache-Control "public";
        add_header Pragma "public";
        add_header Vary "Accept-Encoding";
    }

    # 防止访问隐藏文件(如 .htaccess)
    location ~ /\. {
        deny all;
    }

    # 配置错误页面
    error_page 404 /404.html;
    location = /404.html {
        root /usr/share/nginx/html;
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    # 配置日志
    access_log /var/log/nginx/static_access.log;
    error_log /var/log/nginx/static_error.log;
}


http://www.kler.cn/a/509486.html

相关文章:

  • 【原创】大数据治理入门(2)《提升数据质量:质量评估与改进策略》入门必看 高赞实用
  • 金融项目实战 06|Python实现接口自动化——日志、实名认证和开户接口
  • PCL 新增自定义点类型【2025最新版】
  • idea 如何安装 github copilot
  • Windows图形界面(GUI)-QT-C/C++ - QT 对话窗口
  • Kafka常用命令
  • 掌握 React 高阶组件与高阶函数:构建可复用组件的新境界
  • React 第三方状态管理库相关 -- Redux MobX 篇
  • 【架构设计】现代软件交付中的灵活性与可靠性———云原生与不可变基础设施(微服务/容器化/持续交付,计算/存储/网络)
  • 进程间通信练习题
  • 记录一下在Win上搭建RustDesk
  • 【JsonViewer】Json格式化
  • Vulnhub DC-8靶机攻击实战(一)
  • Applitools与AI图像识别技术在测试中的应用
  • RCD-IoT:在高数据包传输率下,利用资源受限设备实现工业监测与控制
  • boss直聘 __zp_stoken__ 逆向分析
  • 网络编程-TCP套接字
  • 基于Spring Cloud的电商系统设计与实现——用户与商品模块的研究(下)
  • 数据库存储上下标符号,sqlserver 2008r2,dm8
  • 如何通过 Apache Airflow 将数据导入 Elasticsearch
  • 4.若依 BaseController
  • Gin 源码概览 - 路由
  • Android笔记: 实现点击事件透传到底部
  • Django缓存系统详解:使用Redis提升应用性能
  • 快手极速版如何查找ip归属地?怎么关掉
  • PP-OCR系统