[英]vhost using Node.js connect.vhost directive vs NGINX proxy_pass?
[英]Nginx proxy pass subdomain, node vhost
我在 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
上的請求被很好地重定向到好的 express 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 必須使用它自己的 resolver 。 與操作系統提供的解析器不同,它不使用您的/etc/hosts
文件。
也許這會給你一個提示,我想將子域從 Nginx 傳遞到 Express 應用程序。 這是我的代碼:
配置文件
http {
upstream express {
server localhost:3000;
}
nginx/sites-available 中的 domain.com
server {
listen 80;
server_name ~^(?<subdomain>.+)\.domain\.com$;
location / {
proxy_set_header Subdomain $subdomain;
proxy_set_header Host $host;
proxy_pass http://express;
}
}
Express 應用 index.js
var express = require('express');
var app = express();
app.get('/', function (req, res) {
const subdomain = req.headers.subdomain;
});
app.listen(3000, function () {
console.log('Example app listening on port 4000!');
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.