Wd提问: nginx获取域名
Ai批改: 在 Nginx 中获取域名(即客户端请求的主机名)是常见的需求,比如用于虚拟主机配置、重定向、日志记录等。Nginx 提供了一些内置变量来获取域名信息,最常用的是 `$host` 和 `$http_host`。
-
✅ 常见方式获取域名
1、使用 `$host`
nginx
server {
listen 80;
server_name example.com www.example.com;
location / {
输出域名
add_header X-Host $host;
return 200 Domain: $host\n;
}
}
`$host` 是 Nginx 的内置变量,它的值为:
请求行中的 host(来自 HTTP/1.1 请求)
或者来自请求头中的 `Host` 字段
如果都不存在,则使用匹配的 `server_name`
⚠️ 注意:`$host` 会自动转为小写,并且不包含端口号。
-
2、使用 `$http_host`
nginx
location / {
return 200 HTTP Host: $http_host\n;
}
`$http_host` 表示原始的 `Host` 请求头内容。
包含端口号(如果存在),例如:`example.com:8080`
大小写保持原样(但浏览器一般发送的是小写)
-
3、获取域名并做判断(如泛解析)
nginx
server {
listen 80;
server_name ~^(?<subdomain.+)\.example\.com$;
location / {
return 200 Subdomain: $subdomain\nFull Host: $host;
}
}
这里使用了正则表达式捕获子域名,可以实现泛域名解析。
比如访问 `abc.example.com`,`$subdomain` 就是 `abc`
-
📝 示例:根据域名跳转或分流
nginx
server {
listen 80;
server_name example.com;
location / {
if ($host = 'test.example.com') {
rewrite ^(.*)$ https://newsite.com permanent;
}
proxy_pass http://backend;
}
}
-
📁 日志中记录域名
你也可以在日志中记录域名:
nginx
log_format main '$remote_addr $remote_user [$time_local] $request '
'$status $body_bytes_sent $http_referer '
'$http_user_agent $host';
access_log /var/log/nginx/access.log main;
这样日志中就会包含 `$host` 域名信息。
-
🧠 总结
| 变量 | 含义 | 是否包含端口 | 是否自动小写 |
| `$host` | 主机名 | ❌ | ✅ |
| `$http_host` | 原始 Host 请求头 | ✅ | ❌ |
| `$server_name` | 当前匹配的 server_name | ❌ | ✅ |
-
如果你有具体的用途(比如根据域名做跳转、负载均衡、反向代理等),可以告诉我,我可以提供更具体的配置示例。
0
IP地址: 113.64.201.249
搜索次数: 0
提问时间: 2025-07-13 01:58:14
热门提问:
ai制作三维图
批量查询可以注册的域名
黄金t+d是啥意思
大品牌的首饰有哪些
今日黄金出售价多少钱
帮别人外汇交易违法吗
黄金现货 交易时间
ai是什么英文
ai裸绘app
陕西能源
豌豆Ai站群搜索引擎系统
关于我们:
三乐Ai
作文批改
英语分析
在线翻译
拍照识图
Ai提问
英语培训
本站流量
联系我们
温馨提示:本站所有问答由Ai自动创作,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。
技术支持:本站由豌豆Ai提供技术支持,使用的最新版:《豌豆Ai站群搜索引擎系统 V.25.05.20》搭建本站。