You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

添加Nginx proxy_pass代理Redis与MongoDB时启动失败求助

问题排查:Nginx添加Redis代理后启动失败,提示server_name含可疑符号

问题现象

  • 仅配置MongoDB代理(监听27030转发至127.0.0.1:27027)时,Nginx可正常启动
  • 添加Redis代理配置(监听6379转发至127.0.0.1:6379)后,Nginx启动失败,报错指向/etc/nginx/sites-enabled/default第24行的server_name包含可疑符号

相关配置及报错信息

初始Nginx Stream配置

stream {
    server {
        listen  27030;
        proxy_connect_timeout 1s;
        proxy_timeout 3s;
        proxy_pass stream_mongo_backend;
    }

    upstream stream_mongo_backend {
        server  127.0.0.1:27027;
    }
}

添加Redis后的Stream配置

stream {
    server {
        listen  27030;
        proxy_connect_timeout 1s;
        proxy_timeout 3s;
        proxy_pass stream_mongo_backend;
    }

    upstream stream_mongo_backend {
        server  127.0.0.1:27027;
    }

    server {
        listen  6379;
        proxy_pass stream_redis_backend;
    }

    upstream stream_redis_backend {
        server  127.0.0.1:6379;
    }
}

启动报错信息

nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Sun 2024-08-25 10:37:15 CST; 2min 17s ago
       Docs: man:nginx(8)
    Process: 3828683 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 3828684 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=1/FAILURE)
        CPU: 32ms

Aug 25 10:37:12 iZbp1cszroygcwaqhf9sk1Z nginx[3828684]: nginx: [warn] server name "http://app.xx.com/" has suspicious symbols in /etc/nginx/sites-enabled/default:24

站点配置文件(/etc/nginx/sites-enabled/default)

server {
       listen 80 default_server;
       listen [::]:80 default_server;
       # Default server configuration
        server_name http://app.xx.com/;   // line 24
        location / {
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
             proxy_set_header Host $http_host;
             proxy_set_header X-Forwarded-Proto $scheme;
             proxy_pass http://127.0.0.1:3000; # SSL configuration
        }
}

server {
       # Default server configuration
    server_name app.xx.com; # managed by Certbot
        location / {
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
             proxy_set_header Host $http_host;
             proxy_set_header X-Forwarded-Proto $scheme;
             proxy_pass http://127.0.0.1:3000; # SSL configuration
        }
    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/app.kuangcc.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/app.kuangcc.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

server {
    if ($host = app.kuangcc.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot
       listen 80 ;
       listen [::]:80 ;
       server_name app.xx.com;
       return 404; # managed by Certbot
}

问题原因及修复方案

原因分析

报错和Redis代理配置无关,核心问题是站点配置文件第24行的server_name格式错误:

  • server_name仅需填写纯域名,不能包含http://前缀和末尾的/斜杠
  • 这些额外符号属于Nginx禁止的可疑字符,导致配置校验不通过

修复步骤

  1. 编辑站点配置文件:
vi /etc/nginx/sites-enabled/default
  1. 修改第24行的server_name字段,将:
server_name http://app.xx.com/;

替换为:

server_name app.xx.com;
  1. 修正配置中的注释格式(Nginx仅支持#注释,//属于无效格式,虽不直接导致启动失败,但建议统一修正):
# line 24
  1. 校验配置文件合法性:
nginx -t
  1. 重启Nginx服务:
systemctl restart nginx

内容的提问来源于stack exchange,提问作者user824624

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 09:13:14