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

Nginx配置需求:非指定server_name请求访问/ping/返回200 pong

解决Nginx中仅非指定域名访问/ping/返回200的问题

要实现你需要的效果——仅当请求不属于example.com和www.example.com这两个指定域名时,访问/ping/路径才返回200状态码和pong响应——我们可以通过明确默认server的范围来调整配置,避免指定域名的请求触发/ping/的返回规则。

修改后的完整配置

# 处理 example.com 的HTTP请求,统一301跳转至目标HTTPS域名
server {
    listen 80;
    server_name example.com;
    return 301 https://www.sajufortune.com$request_uri;
}

# 处理 www.example.com 的HTTP请求,根据转发协议判断是否跳转HTTPS,否则代理至ALB
server {
    listen 80;
    server_name www.example.com;

    if ($http_x_forwarded_proto != 'https') {
        rewrite ^ https://$host$request_uri? permanent;
    }

    set $alb internal-saju-alb-before-w43.us-west-2.elb.amazonaws.com;
    location / {
        proxy_pass $alb;
    }
}

# 默认Server:仅处理未匹配上述指定域名的所有HTTP请求
server {
    listen 80 default_server;
    server_name _; # 匹配所有未被上面server_name命中的请求

    # 仅对/ping/路径返回200和pong响应
    location /ping/ {
        return 200 'pong';
    }

    # 其他非/ping/路径的默认处理(可根据需求调整,比如返回404)
    location / {
        return 404;
    }
}

关键改动说明

  1. 明确默认Server范围:给第三个server块添加default_server标记和server_name _,让它只负责处理未被example.com和www.example.com匹配到的请求,避免指定域名的请求进入这个块。
  2. 隔离/ping/规则:把/ping/的返回规则放在默认Server内,这样只有非指定域名的请求访问/ping/时才会触发这个逻辑。
  3. 保留原有业务逻辑:前两个server块完全保留你原来的配置,确保example.com和www.example.com的请求依然按照原有规则(301跳转、HTTPS判断、代理至ALB)处理,不会被/ping/规则干扰。

这样调整后,就完全符合你的需求:指定域名的请求无论访问什么路径,都走原有流程;只有非指定域名的请求访问/ping/时,才会返回200状态码和pong响应。

内容的提问来源于stack exchange,提问作者David Foie Gras

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:47:56