我在localhost子域上使用nginx proxy_pass重定向遇到了一些麻烦。我有一个域“ domain.com”,我想重定向* .localhost:9000上* .domain.com上的所有请求。然后,节点处理* .localhost:9000上对快速快递应用程序的所有请求。

在nginx conf上,当我尝试以下操作时:

server {
    server_name extranet.domain.com;
    listen 80;
    location / {
       proxy_pass http://extranet.localhost:9000;
    }
}


在extranet.domain.com上的请求已很好地重定向到了快速表达的webapp。

有了这个 :

server {
    server_name ~^(.*?)\.domain\.com$;
    listen 80;
    location / {
       proxy_pass http://localhost:9000/$1;
    }
}


在localhost:9000上运行的Express应用处理请求/ mysubdomainname,这表示正则表达式是好的。

但是当我尝试:

server {
    server_name ~^(.*?)\.domain\.com$;
    listen 80;
    location / {
       proxy_pass http://$1.localhost:9000;
    }
}


* .domain.com上的所有请求都返回http代码502。
为什么http://localhost:9000/ $ 1;有效,而不是http://$1.localhost:9000; ?
(所有子域都在/ etc / hosts中设置)。

提前致谢。我完全迷路了!

最佳答案

如果在运行时不知道主机名,则nginx必须使用其own resolver。与OS提供的解析器不同,它不使用您的/etc/hosts文件。

关于node.js - Nginx代理传递子域, Node 虚拟主机,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39036592/

10-16 17:54