Nginx 服务器名称优先级

标签 nginx server-name

我在不同的文件中有两个用于 nginx 的服务器部分。

第一个:

server {
  server_name _;
  ...   
}

第二个:

server {
  server_name ~someRegex;
  ...
}

我有一些限制 - 我无法更改第一个服务器部分(即我无法编辑第一个文件)

文档说明了服务器名称优先级的以下内容:

  1. exact name
  2. longest wildcard name starting with an asterisk, e.g. “*.example.org”
  3. longest wildcard name ending with an asterisk, e.g. “mail.*”
  4. first matching regular expression (in order of appearance in a configuration file)

据我了解,server_name _ 用作全能服务器。

所以当我有来自主机的请求匹配时,someRegex 请求由第一个服务器部分处理。有没有办法通过第二个服务器部分处理这些请求?

最佳答案

不完全是。

_ 只会使 server_name 无效。参见 this document .

使 server 成为默认阻塞的原因是首先为给定端口定义或使用 listen ... default_server 修饰符定义。参见 this document .

因此,假设您的正则表达式有效并且第二个服务器 block 确实已由 nginx 安装,那么您的配置将按预期工作。重新加载 nginx 和/或使用

测试配置后检查错误日志
nginx -t

关于Nginx 服务器名称优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36908189/

相关文章:

nginx - 在 nginx 中通过 certbot 安装 ssl 证书后网站关闭

c# - 如何在sql server 2008中使用新创建的服务器名登录

ssl - Nginx 设置多个域与单个 ssl 证书到相同的上游

nginx - kubernetes ingress server-alias 仅适用于一台 ingress 主机

php - $_SERVER ['SERVER_NAME' ] 可以伪造/伪造吗?

php - 如何在 docker 容器上部署 php-fpm 并在 localhost (Ubuntu) 上部署 apache/nginx

ssl - 强制 nginx 验证上游证书

configuration - Nginx 中 $host 和 $http_host 有什么区别

Nginx 重写规则 saml

apache - 服务器别名不起作用