我在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/