nginx如何获取域名?nginx域名配置详解

在 Nginx 中获取当前请求的域名(即客户端请求的 Host 头部)可以通过内置变量实现,以下是详细说明和常见用法:

nginx 获得域名

核心变量

  1. $host

    • 最常用,返回客户端请求的域名(优先级:请求行中的主机名 > Host 头部 > 匹配的 server_name)。
    • 自动去除端口号(如 example.com:8080example.com)。
    • 示例:
      location / {
          add_header X-Domain $host;
      }
  2. $http_host

    • 直接返回原始的 Host 请求头(包含端口号,如 example.com:8080)。
    • 如果请求头不存在,则值为空。
  3. $server_name

    nginx 获得域名

    • 返回当前匹配的 server 块中配置的域名(Nginx 配置中 server_name 的值)。

使用场景示例

日志记录域名

在日志格式中记录请求的域名:

http {
    log_format main '$remote_addr - $host "$request"';
    access_log /var/log/nginx/access.log main;
}

根据域名重定向

www 域名重定向到无 www

server {
    listen 80;
    server_name www.example.com;
    return 301 $scheme://example.com$request_uri;
}
server {
    listen 80;
    server_name example.com;
    # 主配置...
}

反向代理传递域名

将原始域名传递给后端服务:

nginx 获得域名

location / {
    proxy_set_header Host $host;  # 关键:传递客户端请求的域名
    proxy_pass http://backend_server;
}

多域名站点处理

根据域名展示不同内容:

server {
    listen 80;
    server_name site1.com site2.com;
    location / {
        if ($host = "site1.com") {
            proxy_pass http://backend1;
        }
        if ($host = "site2.com") {
            proxy_pass http://backend2;
        }
    }
}

注意事项

  • 安全性$host 变量是安全的,已过滤无效字符。
  • 端口处理
    • $host 自动移除端口(如 example.com:8080example.com)。
    • 需保留端口时用 $http_host
  • 默认域名
    若请求未携带 Host 头部,Nginx 使用第一个 server 块处理请求(可通过 server { listen ... default_server; } 显式指定)。

完整示例

server {
    listen 80;
    server_name example.com www.example.com;
    location / {
        # 重定向 www 到非 www
        if ($host = "www.example.com") {
            return 301 https://example.com$request_uri;
        }
        # 记录日志(含域名)
        access_log /var/log/nginx/example.log;
        # 代理到后端并传递域名
        proxy_set_header Host $host;
        proxy_pass http://localhost:3000;
    }
}

通过以上方法,您可以灵活获取并操作请求域名,适用于重定向、代理、日志记录等常见场景。

图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/286333.html

(0)
上一篇 2026年2月7日 22:03
下一篇 2026年2月7日 22:08

相关推荐

  • 如何有效防止域名被误报毒?揭秘安全防护策略与技巧!

    域名防报毒策略与最佳实践域名防报毒的重要性随着互联网的快速发展,网络安全问题日益突出,域名作为网站的重要入口,其安全性直接关系到用户的访问体验和网站的整体安全,实施有效的域名防报毒策略至关重要,域名防报毒的基本原理域名防报毒主要基于以下几个原理:防病毒软件的检测机制:通过病毒特征库识别和拦截恶意域名,域名解析安……

    2025年12月10日
    01130
  • 阿里云域名注册后,后续维护、优化和推广该如何操作?

    阿里云域名注册的流程1 注册域名您需要登录阿里云官网,进入域名注册页面,在搜索框中输入您想要注册的域名,系统会显示该域名的可用性,如果该域名未被注册,您可以选择立即注册,2 选择域名注册商在注册域名时,您需要选择一个域名注册商,阿里云提供多种域名注册商供您选择,包括阿里云、中国互联网络信息中心(CNNIC)、V……

    2025年12月21日
    0950
  • 阿里云添加域名具体操作步骤是什么?新手入门指南与常见问题解答?

    域名作为互联网上网站的“门牌号”,是用户访问网站的关键标识,在阿里云平台上添加域名,不仅能让用户通过自定义域名访问资源,还能进一步整合云服务(如CDN、SSL证书等),提升网站性能与安全性,本文将详细解析阿里云添加域名的全流程,结合酷番云在云服务集成领域的经验,为用户提供专业、权威的操作指南,阿里云域名添加的基……

    2026年1月10日
    01110
    • 服务器间歇性无响应是什么原因?如何排查解决?

      根源分析、排查逻辑与解决方案服务器间歇性无响应是IT运维中常见的复杂问题,指服务器在特定场景下(如高并发时段、特定操作触发时)出现短暂无响应、延迟或服务中断,而非持续性的宕机,这类问题对业务连续性、用户体验和系统稳定性构成直接威胁,需结合多维度因素深入排查与解决,常见原因分析:从硬件到软件的多维溯源服务器间歇性……

      2026年1月10日
      020
  • 域名更换服务商怎么操作?域名转入哪家服务商好

    域名更换服务商的核心在于确保网站业务的连续性与数据的安全性,这一过程并非简单的“搬家”,而是一次涉及DNS解析、域名转移码获取、续费状态确认等技术环节的系统工程,成功的域名转移不仅能够降低管理成本、统一运维入口,更能通过选择优质服务商提升域名的安全防护能力,避免因服务商跑路或解析故障导致的业务停摆风险, 整个操……

    2026年3月16日
    0302

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注