nginx server_name正则表达式

时间:2017-03-01 17:06:55

标签: nginx

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服务器是否可以访问。

有什么限制我不知道吗? 谢谢。

3 个答案:

答案 0 :(得分:3)

试试这个:

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

答案 1 :(得分:1)

我从来没有见过带双引号的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 :你说得对,我不知道!

答案 2 :(得分:1)

尝试:

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

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