【问题标题】:nginx server_name regexnginx server_name 正则表达式
【发布时间】:2017-03-01 17:06:54
【问题描述】:

nginx中的server_name不匹配

我想匹配这样的 FQDN 我想出了

server_name "~^(www.)?ucwebapi-uccore(\d{0,3})-(\d{0,3})\.testme\.net";

匹配

ucwebapi.testme.net
ucwebapi-uccore.testme.net
ucwebapi-uccore1-0.testme.net
ucwebapi-uccore999-999.testme.net

通过https://regex101.com/r/tAwEp9/2 验证

经过测试

server_name "~^(www.)?ucwebapi-uccore(\d{0,3})-(\d{0,3})\.testme\.net ucwebapi1.testme.net";

查看 ucwebapi1.testme.de 服务器是否可访问。

有没有我不知道的限制? 谢谢。

【问题讨论】:

    标签: nginx


    【解决方案1】:

    试试这个:

    server_name "~^(www.)?ucwebapi(-uccore)?(\d{1,3}-\d{1,3})?\.testme\.net";
    

    您的 regex101 页面和配置中的内容之间似乎缺少一些字符。

    我还对其进行了一些调整,使其不会匹配:

    ucwebapi-uccore999.testme.net
    ucwebapi-uccore-.testme.net
    ucwebapi-uccore-999.testme.net
    

    【讨论】:

      【解决方案2】:

      我从未见过带有双引号的 server_name 配置...但我不确定这是否能解决问题。

      一些示例配置here

      编辑:你有没有这样的默认虚拟服务器:

      server {
          listen 80;
          server_name _;
          return 404; # default
      }
      
      # now add your specific server
      server {
          listen 80;
          server_name "~^(www.)?ucwebapi-uccore(\d{0,3})-(\d{0,3})\.testme\.net ucwebapi1.testme.net";
          ...
      }
      

      只有在您配置了默认配置时,特定配置才会起作用。

      @abcdn:你完全正确,我不知道!

      【讨论】:

      【解决方案3】:

      试试:

      server_name "~^(www.)?ucwebapi-uccore(\d{0,3})-(\d{0,3})\.testme\.net" ucwebapi1.testme.net;
      

      您的 server_name 引号包含整行。可能被视为 2 个单独的条目,nginx 插入为单个条目。

      【讨论】:

        猜你喜欢
        • 2016-04-28
        • 1970-01-01
        • 1970-01-01
        • 2021-05-16
        • 2016-10-21
        • 2013-03-12
        • 2018-07-18
        • 2017-05-05
        • 2021-03-15
        相关资源
        最近更新 更多