gpt4 book ai didi

Node.js,表达: limit to certain hostname

转载 作者:太空宇宙 更新时间:2023-11-04 03:10:40 24 4
gpt4 key购买 nike

我很难将我的 Nodejs 应用程序限制为服务某个主机名。您可以specify the hostname当调用 server.listen() 时,但在内部我相信这一切所做的都是将主机名解析为 IP 地址,即使文档声明“开始接受指定端口和主机名上的连接”。

看下面的例子:

var http = require('http');

http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello');
}).listen(3000, 'host.tld');

(假设 host.tld 解析为 99.99.99.99)

无论主机名如何,该服务器都将处理在端口 3000 上发送到 99.99.99.99 的所有请求。

所以我想知道一种将我的应用程序限制为特定主机名的好方法。我当前的解决方案是检查请求的主机名并将其与我想要服务的主机名进行比较。

示例(使用 express ):

// Limit all requests to the specified hostname.
app.all('*', function(req, res, next) {
if (req.host !== app.get('hostname')) {
res.writeHead(404, {
'Content-Type': 'text/plain'
});
res.end('Not found');
} else {
next();
}
});

这看起来像是一种黑客行为,尽管我还没有找到更好的方法来做到这一点。任何建议或指示将不胜感激。

最佳答案

我要在这里回答我自己的问题。简短的回答是,node.js 似乎无法“本地”处理这个问题(即,没有额外的应用程序逻辑)。如果有人不同意,请告诉我!

所以我的解决方案是通过 Nginx 走代理路由。这是我的 nginx 配置文件:

https://gist.github.com/badsyntax/8455064

这个答案可能对某些人也有帮助:https://stackoverflow.com/a/5015178/492325

关于Node.js,表达: limit to certain hostname,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21158686/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com