Nginx 499/502/504错误排查的实战指南

 更新时间:2026年06月12日 16:38:08   作者:小二爱编程·  
Nginx错误排查与优化ginx错误码详解,499/502/504错误处理方法,包括错误码含义、日志分析、配置优化和问题定位,本文将帮助你解决Nginx日志中的499/502/504问题,需要的朋友可以参考下

前言

痛点:Nginx 日志中出现大量 499/502/504 错误?用户反馈接口超时?服务间歇性不可用?不知道如何排查?

解决方案:掌握 Nginx 网关错误排查 — 从错误码含义、日志分析、到问题定位与解决。

Nginx 错误排查流程图:

HTTP 状态码分类:

状态码类型含义
4xx客户端错误请求有误
499Nginx 特有客户端主动断开
5xx服务器错误服务端处理失败
502Bad Gateway上游服务不可达
504Gateway Timeout上游服务超时

一、错误码详解

1.1 499 状态码

499 含义:

项目说明
定义客户端主动关闭连接
原因客户端超时、用户取消、网络断开
是否标准❌ Nginx 特有状态码
是否记录日志默认不记录,需配置
# ===== 499 相关配置 =====
# 让 Nginx 记录 499 状态码(默认不记录)
# 在 http/server/location 中配置
access_log /var/log/nginx/access.log combined;
# 或者配置 proxy_ignore_client_abort
# on: 客户端断开时继续等待上游响应(可能浪费资源)
# off: 客户端断开时立即关闭上游连接(默认)
proxy_ignore_client_abort off;
# 查看 499 错误日志
grep " 499 " /var/log/nginx/access.log | tail -100
# 统计 499 错误数量
grep " 499 " /var/log/nginx/access.log | wc -l
# 统计 499 错误的接口分布
grep " 499 " /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -20

1.2 502 状态码

502 含义:

项目说明
定义Bad Gateway - 上游服务不可达
原因服务未启动、崩溃、端口监听失败
常见错误日志connect() failed, Connection refused
# ===== 502 错误日志示例 =====
# 错误日志示例
# 2026/06/04 10:00:00 [error] 12345#0: *67890 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.1.100, server: api.example.com, request: "GET /api/users HTTP/1.1", upstream: "http://127.0.0.1:8000/api/users", host: "api.example.com"
# 常见错误原因
# 1. Connection refused - 服务未启动或端口不对
# 2. No such file or directory - Unix socket 不存在
# 3. Permission denied - 权限问题
# 4. Connection reset by peer - 服务崩溃
# 查看 502 错误日志
grep " 502 " /var/log/nginx/access.log | tail -100
grep "connect() failed" /var/log/nginx/error.log | tail -100
# 统计 502 错误的上游地址
grep " 502 " /var/log/nginx/access.log | grep -oP 'upstream: "\K[^"]+' | sort | uniq -c
# 检查上游服务状态
systemctl status your-service
ps aux | grep your-service
netstat -tlnp | grep 8000
ss -tlnp | grep 8000

1.3 504 状态码

504 含义:

项目说明
定义Gateway Timeout - 上游服务超时
原因上游处理慢、超时配置过短、网络延迟
常见错误日志upstream timed out
# ===== 504 错误日志示例 =====
# 错误日志示例
# 2026/06/04 10:00:00 [error] 12345#0: *67890 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 192.168.1.100, server: api.example.com, request: "GET /api/slow-query HTTP/1.1", upstream: "http://127.0.0.1:8000/api/slow-query", host: "api.example.com"
# 查看 504 错误日志
grep " 504 " /var/log/nginx/access.log | tail -100
grep "upstream timed out" /var/log/nginx/error.log | tail -100
# 统计 504 错误的接口
grep " 504 " /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -20
# 统计 504 错误的时间分布(找出高峰时段)
grep " 504 " /var/log/nginx/access.log | awk '{print $4}' | cut -d: -f1-2 | sort | uniq -c

二、配置参数详解

2.1 超时配置

# ===== Nginx 超时配置详解 =====
http {
    # 客户端超时
    client_body_timeout 60s;        # 读取请求体超时
    client_header_timeout 60s;      # 读取请求头超时
    send_timeout 60s;               # 响应发送超时
    # keepalive 超时
    keepalive_timeout 65s;          # 长连接超时
    # 上游超时(关键配置)
    proxy_connect_timeout 60s;      # 与上游建立连接超时
    proxy_send_timeout 60s;         # 向上游发送请求超时
    proxy_read_timeout 60s;         # 等待上游响应超时(最常见)
    # FastCGI 超时(PHP 等)
    fastcgi_connect_timeout 60s;
    fastcgi_send_timeout 60s;
    fastcgi_read_timeout 60s;
    # uwsgi 超时(Python 等)
    uwsgi_connect_timeout 60s;
    uwsgi_send_timeout 60s;
    uwsgi_read_timeout 60s;
    upstream backend {
        server 127.0.0.1:8000;
        server 127.0.0.1:8001 backup;
        # 保持连接池
        keepalive 32;
        keepalive_timeout 60s;
        keepalive_requests 1000;
    }
    server {
        listen 80;
        server_name api.example.com;
        # 针对特定接口调整超时
        location /api/ {
            proxy_pass http://backend;
            proxy_http_version 1.1;
            proxy_set_header Connection "";
            # 继承全局超时或单独设置
            proxy_connect_timeout 60s;
            proxy_send_timeout 60s;
            proxy_read_timeout 60s;
        }
        # 慢接口单独配置更长超时
        location /api/slow-query {
            proxy_pass http://backend;
            proxy_read_timeout 300s;  # 5 分钟
        }
        # 大文件上传
        location /api/upload {
            proxy_pass http://backend;
            client_max_body_size 100m;
            client_body_timeout 300s;
            proxy_read_timeout 300s;
        }
    }
}

2.2 错误处理

# ===== Nginx 错误处理配置 =====
server {
    listen 80;
    server_name api.example.com;
    # 自定义错误页面
    error_page 499 = @handle_499;
    error_page 502 = @handle_502;
    error_page 504 = @handle_504;
    location @handle_499 {
        default_type application/json;
        return 499 '{"code": 499, "message": "客户端取消请求"}';
    }
    location @handle_502 {
        default_type application/json;
        return 502 '{"code": 502, "message": "服务暂时不可用"}';
    }
    location @handle_504 {
        default_type application/json;
        return 504 '{"code": 504, "message": "请求超时,请稍后重试"}';
    }
    # 重试机制
    location /api/ {
        proxy_pass http://backend;
        # 发生错误时重试其他服务器
        proxy_next_upstream error timeout http_502 http_503 http_504;
        proxy_next_upstream_tries 3;      # 最多重试 3 次
        proxy_next_upstream_timeout 30s;  # 重试总超时 30 秒
        # 连接超时不重试(防止雪崩)
        # proxy_next_upstream_timeout 0;
    }
    # 健康检查(需要 nginx-plus 或第三方模块)
    # location @health {
    #     proxy_pass http://backend/health;
    # }
}

2.3 日志格式

# ===== Nginx 日志配置 =====
http {
    # 自定义日志格式(包含更多调试信息)
    log_format detailed escape=json '{'
        '"time":"$time_iso8601",'
        '"remote_addr":"$remote_addr",'
        '"request":"$request",'
        '"status":"$status",'
        '"body_bytes_sent":"$body_bytes_sent",'
        '"request_time":"$request_time",'
        '"upstream_response_time":"$upstream_response_time",'
        '"upstream_connect_time":"$upstream_connect_time",'
        '"upstream_header_time":"$upstream_header_time",'
        '"http_referer":"$http_referer",'
        '"http_user_agent":"$http_user_agent",'
        '"upstream_addr":"$upstream_addr",'
        '"upstream_status":"$upstream_status"'
    '}';
    access_log /var/log/nginx/access.log detailed;
    error_log /var/log/nginx/error.log warn;
    # 单独记录上游错误
    map $upstream_status $log_upstream_error {
        default 0;
        ~^5 1;  # 上游返回 5xx
    }
    server {
        access_log /var/log/nginx/access.log detailed;
        # 只记录错误
        location /api/ {
            proxy_pass http://backend;
            access_log /var/log/nginx/error.log combined if=$log_upstream_error;
        }
    }
}

三、排查方法

3.1 日志分析脚本

#!/usr/bin/env python3
"""Nginx 日志分析脚本"""
import re
from collections import defaultdict, Counter
from datetime import datetime
import json
# 日志解析正则
LOG_PATTERN = re.compile(
    r'(?P<ip>\S+) \S+ \S+ \[(?P<time>[^\]]+)\] '
    r'"(?P<method>\S+) (?P<path>\S+) \S+" '
    r'(?P<status>\d+) (?P<size>\d+) '
    r'"(?P<referer>[^"]*)" "(?P<ua>[^"]*)"'
)
def parse_nginx_log(log_file):
    """解析 Nginx 日志"""
    entries = []
    with open(log_file, 'r', encoding='utf-8', errors='ignore') as f:
        for line in f:
            match = LOG_PATTERN.match(line)
            if match:
                entries.append(match.groupdict())
    return entries
def analyze_errors(log_file):
    """分析错误日志"""
    entries = parse_nginx_log(log_file)
    # 按状态码统计
    status_counter = Counter(e['status'] for e in entries)
    # 按接口统计错误
    error_by_path = defaultdict(Counter)
    for e in entries:
        if int(e['status']) >= 400:
            error_by_path[e['path']][e['status']] += 1
    # 按时间统计
    error_by_time = defaultdict(int)
    for e in entries:
        if int(e['status']) >= 400:
            # 提取小时
            time_str = e['time'].split(':')[0] + ':' + e['time'].split(':')[1]
            error_by_time[time_str] += 1
    # 打印结果
    print("=" * 60)
    print("状态码统计")
    print("=" * 60)
    for status, count in sorted(status_counter.items(), key=lambda x: -x[1]):
        print(f"  {status}: {count}")
    print("\n" + "=" * 60)
    print("错误接口 Top 20")
    print("=" * 60)
    error_paths = [(path, sum(counter.values())) for path, counter in error_by_path.items()]
    error_paths.sort(key=lambda x: -x[1])
    for path, count in error_paths[:20]:
        status_dist = error_by_path[path]
        status_str = ", ".join(f"{s}:{c}" for s, c in status_dist.items())
        print(f"  {path}: {count} ({status_str})")
    print("\n" + "=" * 60)
    print("错误时间分布(小时)")
    print("=" * 60)
    for time, count in sorted(error_by_time.items()):
        print(f"  {time}: {count}")
    return {
        'status': dict(status_counter),
        'error_by_path': {k: dict(v) for k, v in error_by_path.items()},
        'error_by_time': dict(error_by_time)
    }
def find_502_504_causes(log_file):
    """分析 502/504 原因"""
    with open(log_file, 'r', encoding='utf-8', errors='ignore') as f:
        content = f.read()
    # 查找连接拒绝
    connection_refused = len(re.findall(r'Connection refused', content))
    # 查找超时
    timed_out = len(re.findall(r'timed out', content))
    # 查找连接重置
    connection_reset = len(re.findall(r'Connection reset', content))
    print("\n" + "=" * 60)
    print("502/504 原因分析")
    print("=" * 60)
    print(f"  Connection refused: {connection_refused}")
    print(f"  Connection timed out: {timed_out}")
    print(f"  Connection reset: {connection_reset}")
    return {
        'connection_refused': connection_refused,
        'timed_out': timed_out,
        'connection_reset': connection_reset
    }
if __name__ == '__main__':
    import sys
    log_file = sys.argv[1] if len(sys.argv) > 1 else '/var/log/nginx/access.log'
    analyze_errors(log_file)
    find_502_504_causes(log_file)

3.2 实时监控脚本

#!/bin/bash
# ===== Nginx 实时监控脚本 =====
LOG_FILE="/var/log/nginx/access.log"
echo "监控 Nginx 错误日志(按 Ctrl+C 停止)"
echo "========================================"
# 实时监控 499/502/504
tail -f "$LOG_FILE" | grep --line-buffered -E " (499|502|504) "
# 或者更详细的信息
# tail -f "$LOG_FILE" | grep --line-buffered -E " (499|502|504) " | awk '{print $1, $4, $7, $9}'
#!/bin/bash
# ===== Nginx 错误统计脚本 =====
LOG_FILE="/var/log/nginx/access.log"
echo "Nginx 错误统计报告"
echo "=================="
echo ""
# 总请求数
total=$(wc -l < "$LOG_FILE")
echo "总请求数: $total"
# 各状态码统计
echo ""
echo "状态码分布:"
awk '{print $9}' "$LOG_FILE" | sort | uniq -c | sort -rn | head -10
# 499 统计
echo ""
echo "499 错误统计:"
grep " 499 " "$LOG_FILE" | wc -l
echo ""
echo "499 错误接口:"
grep " 499 " "$LOG_FILE" | awk '{print $7}' | sort | uniq -c | sort -rn | head -10
# 502 统计
echo ""
echo "502 错误统计:"
grep " 502 " "$LOG_FILE" | wc -l
echo ""
echo "502 错误接口:"
grep " 502 " "$LOG_FILE" | awk '{print $7}' | sort | uniq -c | sort -rn | head -10
# 504 统计
echo ""
echo "504 错误统计:"
grep " 504 " "$LOG_FILE" | wc -l
echo ""
echo "504 错误接口:"
grep " 504 " "$LOG_FILE" | awk '{print $7}' | sort | uniq -c | sort -rn | head -10
# 慢请求(响应时间 > 1s)
echo ""
echo "慢请求(>1s)统计:"
awk '{print $NF, $0}' "$LOG_FILE" | awk '$1 > 1' | wc -l
echo ""
echo "最慢请求 Top 10:"
awk '{print $NF, $7}' "$LOG_FILE" | sort -rn | head -10

3.3 上游服务检查

# ===== 上游服务健康检查 =====
# 1. 检查服务是否运行
systemctl status your-service
# 2. 检查端口是否监听
netstat -tlnp | grep 8000
ss -tlnp | grep 8000
# 3. 检查进程
ps aux | grep your-service
# 4. 测试连接
curl -I http://127.0.0.1:8000/health
# 5. 检查连接数
ss -tan state established '( sport = :8000 )' | wc -l
# 6. 检查 TIME_WAIT 数量
ss -tan state time-wait | wc -l
# 7. 检查系统资源
free -h
df -h
top -bn1 | head -20
# 8. 检查应用日志
journalctl -u your-service -n 100
# 9. 检查 Nginx 到上游的连接
ss -tan | grep :8000 | awk '{print $1}' | sort | uniq -c
# 10. 压测上游服务
ab -n 1000 -c 10 http://127.0.0.1:8000/api/test

四、生产案例

4.1 案例:大量 499 错误

# ===== 案例:前端 30s 超时导致大量 499 =====

# 问题现象
# Nginx 日志中大量 499,业务处理实际成功

# 排查步骤
# 1. 统计 499 分布
grep " 499 " /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -rn

# 输出示例:
#    1523 /api/export-data
#     876 /api/batch-process
#     234 /api/heavy-compute

# 2. 分析这些接口的响应时间
grep "/api/export-data" /var/log/nginx/access.log | awk '{print $NF}' | sort -n | tail -100

# 输出示例:平均 45s

# 3. 检查前端超时配置
# 前端 axios/requests 默认超时 30s

# 原因分析
# - 后端处理需要 45s
# - 前端设置 30s 超时
# - 30s 后前端主动断开,Nginx 返回 499

# 解决方案 1:增加前端超时
# axios.defaults.timeout = 60000; // 60s

# 解决方案 2:优化后端处理
# - 使用异步处理 + 轮询
# - 返回任务 ID,前端轮询状态

# 解决方案 3:调整 Nginx 配置
location /api/export-data {
    proxy_pass http://backend;
    proxy_read_timeout 120s;  # 增加超时
}

# 最佳方案:异步处理
# 1. 接口立即返回 task_id
# 2. 后台异步处理
# 3. 前端轮询任务状态
@app.post("/api/export")
async def export_data():
    task_id = await create_task()
    return {"task_id": task_id, "status": "pending"}

@app.get("/api/tasks/{task_id}")
async def get_task_status(task_id: str):
    return await get_task(task_id)

4.2 案例:502 错误高峰期频发

# ===== 案例:高峰期服务崩溃导致 502 =====

# 问题现象
# 每天 10:00-12:00 高峰期大量 502

# 排查步骤
# 1. 分析 502 时间分布
grep " 502 " /var/log/nginx/access.log | awk '{print $4}' | cut -d: -f1-2 | sort | uniq -c

# 输出示例:
#    15 2026/06/04:08
#    23 2026/06/04:09
#  1523 2026/06/04:10  <-- 高峰期
#  2345 2026/06/04:11  <-- 高峰期
#    12 2026/06/04:12

# 2. 检查应用日志
journalctl -u your-app --since "10:00" --until "12:00" | grep -i "error\|exception\|oom"

# 发现:OOM 错误
# Jun 04 10:15:23 server your-app[12345]: java.lang.OutOfMemoryError: Java heap space

# 3. 检查内存使用
free -h

# 输出:内存几乎用完

# 4. 检查进程内存
ps aux --sort=-%mem | head -10

# 原因分析
# - 高峰期内存不足
# - JVM OOM 导致服务崩溃
# - Nginx 无法连接,返回 502

# 解决方案
# 1. 增加 JVM 堆内存
JAVA_OPTS="-Xms2g -Xmx4g"

# 2. 增加服务器内存
# 或水平扩展

# 3. 添加健康检查
location /health {
    proxy_pass http://backend/health;
    proxy_connect_timeout 5s;
    proxy_read_timeout 5s;
}

# 4. Nginx 配置重试
location /api/ {
    proxy_pass http://backend;
    proxy_next_upstream error timeout http_502;
    proxy_next_upstream_tries 2;
}

4.3 案例:间歇性 504 超时

# ===== 案例:数据库慢查询导致间歇性 504 =====

# 问题现象
# 某些请求偶尔 504,不是持续发生

# 排查步骤
# 1. 分析 504 的请求特征
grep " 504 " /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -rn

# 输出示例:
#    234 /api/orders
#    123 /api/reports
#     45 /api/search

# 2. 检查这些接口的响应时间分布
grep "/api/orders" /var/log/nginx/access.log | awk '{print $NF}' | sort -n | head -100
grep "/api/orders" /var/log/nginx/access.log | awk '{print $NF}' | sort -n | tail -100

# 发现:大部分 < 1s,少数 > 60s

# 3. 检查上游服务日志
grep "/api/orders" /var/log/app.log | grep -i "slow\|timeout"

# 发现:数据库慢查询
# [WARN] Slow query: 65.23s SELECT * FROM orders WHERE ...

# 原因分析
# - 特定查询触发慢查询
# - 数据库索引缺失
# - 数据量增长导致性能下降

# 解决方案 1:优化查询
# 添加索引
CREATE INDEX idx_orders_user_created ON orders(user_id, created_at);

# 解决方案 2:增加 Nginx 超时(临时)
location /api/orders {
    proxy_pass http://backend;
    proxy_read_timeout 120s;  # 增加到 2 分钟
}

# 解决方案 3:添加缓存
location /api/orders {
    proxy_pass http://backend;
    proxy_cache orders_cache;
    proxy_cache_valid 200 5m;
    proxy_cache_key "$request_uri";
}

# 解决方案 4:读写分离
# 读请求走从库

五、监控与告警

5.1 Prometheus 监控

# ===== Prometheus Nginx 监控配置 =====
# nginx-prometheus-exporter
# 或使用 nginx-module-vts
scrape_configs:
  - job_name: 'nginx'
    static_configs:
      - targets: ['localhost:9113']
# 告警规则
groups:
  - name: nginx-alerts
    rules:
      - alert: NginxHighErrorRate
        expr: |
          sum(rate(nginx_http_requests_total{status=~"5.."}[5m])) 
          / sum(rate(nginx_http_requests_total[5m])) > 0.05
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "Nginx 错误率过高"
          description: "5xx 错误率 {{ $value | humanizePercentage }}"
      - alert: NginxHigh499
        expr: |
          sum(rate(nginx_http_requests_total{status="499"}[5m])) 
          / sum(rate(nginx_http_requests_total[5m])) > 0.1
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "Nginx 499 错误率高"
          description: "客户端取消率 {{ $value | humanizePercentage }}"
      - alert: NginxBackendDown
        expr: nginx_upstream_ups{status="down"} > 0
        for: 1m
        labels:
          severity: critical
        annotations:
          summary: "上游服务不可用"
          description: "上游服务 {{ $labels.upstream }} 处于 down 状态"
      - alert: NginxHighLatency
        expr: histogram_quantile(0.99, rate(nginx_http_request_duration_seconds_bucket[5m])) > 5
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "Nginx 响应延迟高"
          description: "P99 延迟 {{ $value }}s"

5.2 Grafana 仪表板

// Grafana Dashboard JSON(简化版)
{
  "panels": [
    {
      "title": "请求状态码分布",
      "type": "piechart",
      "targets": [
        {
          "expr": "sum by(status) (rate(nginx_http_requests_total[5m]))",
          "legendFormat": "{{status}}"
        }
      ]
    },
    {
      "title": "错误率趋势",
      "type": "graph",
      "targets": [
        {
          "expr": "sum(rate(nginx_http_requests_total{status=~\"5..\"}[5m]))",
          "legendFormat": "5xx"
        },
        {
          "expr": "sum(rate(nginx_http_requests_total{status=\"499\"}[5m]))",
          "legendFormat": "499"
        }
      ]
    },
    {
      "title": "上游响应时间",
      "type": "heatmap",
      "targets": [
        {
          "expr": "rate(nginx_http_upstream_response_time_seconds_bucket[5m])",
          "format": "heatmap"
        }
      ]
    },
    {
      "title": "上游健康状态",
      "type": "stat",
      "targets": [
        {
          "expr": "nginx_upstream_ups",
          "legendFormat": "{{upstream}}"
        }
      ]
    }
  ]
}

六、总结

6.1 排查流程

6.2 错误速查表

错误码含义常见原因解决方案
499客户端断开前端超时、用户取消优化接口/调整超时
502上游不可达服务崩溃、端口不对检查服务状态
504上游超时处理慢、超时配置短优化处理/增加超时

6.3 关键配置速查

配置项默认值说明
proxy_connect_timeout60s连接上游超时
proxy_send_timeout60s发送请求超时
proxy_read_timeout60s读取响应超时
proxy_next_upstreamerror timeout重试条件
proxy_next_upstream_tries1重试次数

6.4 最佳实践

实践说明
合理超时根据接口特性设置
重试机制避免单点故障
健康检查及时剔除故障节点
监控告警错误率超过阈值告警
日志分析定期分析错误分布
限流熔断防止雪崩

本文基于常见 Nginx 错误编写。

以上就是Nginx499/502/504错误排查的实战指南的详细内容,更多关于Nginx 499/502/504错误排查的资料请关注脚本之家其它相关文章!

相关文章

  • 教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤

    教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤

    这篇文章主要介绍了利用 Nginx 服务搭建子域环境提升二维地图加载性能,本文分步骤通过实例代码给大家介绍的非常详细,需要的朋友参考下吧
    2021-09-09
  • Nginx 合并请求连接且加速网站访问实例详解

    Nginx 合并请求连接且加速网站访问实例详解

    这篇文章主要介绍了Nginx 合并请求连接且加速网站访问实例详解,浏览器的并发请求数目限制是针对同一域名的,同一时间针对同一域名下的请求有一定数量限制,超过限制数目的请求会被阻塞,需要的朋友可以参考下
    2019-07-07
  • 关于nginx 实现jira反向代理的问题

    关于nginx 实现jira反向代理的问题

    这篇文章主要介绍了关于nginx 实现jira反向代理的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • 使用nginx同域名下部署多个vue项目并使用反向代理的方法

    使用nginx同域名下部署多个vue项目并使用反向代理的方法

    这篇文章主要介绍了使用nginx同域名下部署多个vue项目并使用反向代理的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • Python实现批量压缩图片的实用脚本分享

    Python实现批量压缩图片的实用脚本分享

    手机拍摄的4K照片动辄10MB,单反相机拍摄的RAW格式图片更是高达50MB以上,庞大的图片体积会带来诸多困扰,通过Python脚本实现自动化压缩,不仅能精准控制压缩参数,还能批量处理成百上千张图片,本文将通过实际案例,展示如何用50行代码构建高效图片压缩工具
    2026-02-02
  • nginx如何实现同个ip、端口访问不同的项目(以路径区分项目)

    nginx如何实现同个ip、端口访问不同的项目(以路径区分项目)

    这篇文章主要介绍了nginx如何实现同个ip、端口访问不同的项目(以路径区分项目),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • 教你在容器中使用nginx搭建上传下载的文件服务器

    教你在容器中使用nginx搭建上传下载的文件服务器

    这篇文章主要介绍了容器中使用nginx搭建支持上传下载的文件服务器,在这需要注意为了让nginx支持文件上传,需要下载并运行带有nginx-upload-module模块的容器,需要的朋友可以参考下
    2022-05-05
  • Nginx请求转发配置指南

    Nginx请求转发配置指南

    Nginx 是一款高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器,本文档将介绍如何使用 Nginx 配置请求转发,并解释一些常用的配置参数,需要的朋友可以参考下
    2024-10-10
  • Kubernetes中Nginx服务启动失败排查流程分析(Error: ImagePullBackOff)

    Kubernetes中Nginx服务启动失败排查流程分析(Error: ImagePullBackOff)

    这篇文章主要介绍了Kubernetes中Nginx服务启动失败排查流程(Error: ImagePullBackOff),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • nginx+redis实现session共享

    nginx+redis实现session共享

    这篇文章主要为大家详细介绍了nginx+redis实现session的共享,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03

最新评论