繁体   English   中英

服务器名称正则表达式Nginx与proxy_pass不起作用

[英]Servername regex Nginx with proxy_pass not working

我希望我的服务器监听来自mon1.example.com/mon2.example.com/mon3.example.com / ...的所有请求,并将其代理到内部IP。

我在Nginx中做了这个简单的配置

upstream supervisor {
        server 127.0.0.1:9001 fail_timeout=0;
}

server {
    listen 80;
    server_name ~^mon(\d+)\.example\.com$;

    location / {
        proxy_pass http://127.0.0.1:9001;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

但是,这似乎不起作用。 我读过某个地方,您无法在Nginx中将正则表达式服务器名与代理传递结合使用,这是正确的吗? 还有哪些替代方案?

根据nginx doco ;

可以使用确切名称,通配符名称或正则表达式来定义它们:

server {
     listen       80;
     server_name  example.org  www.example.org;
     ... }

 server {
     listen       80;
     server_name  *.example.org;
     ... }

 server {
     listen       80;
     server_name  mail.*;
     ... }

 server {
     listen       80;
     server_name  ~^(?<user>.+)\.example\.net$;
     ... }

更新:指定多个用逗号分隔的主机名也可以。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM