Nginx代理服务器通过子域,节点虚拟主机

问题描述:

我有一些本地主机子域上的nginx proxy_pass重定向问题。我有一个域“domain.com”,我想在* .localhost:9000上重定向* .domain.com上的所有请求。然后,节点将* .localhost:9000上的所有请求处理到良好的快速应用程序。Nginx代理服务器通过子域,节点虚拟主机

在nginx的的c​​onf当我尝试以下方法:在extranet.domain.com

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

请求也被重定向到好的快递web应用。

有了这个:

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

快速的应用程序运行在localhost:9000手柄请求/ mysubdomainname,这implie该正则表达式是好的。

但是当我尝试:

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文件。

+0

谢谢, 所以唯一的方法来做我想做的就是添加 服务器{server_name:subdomain1.domain.com; 听:80; location/{ proxy_pass http://subdomain1.localhost:9000; } } for each subdomain? – Dafuck

+0

或者配置你自己的本地DNS服务器。 – VBart