gpt4 book ai didi

node.js - 在 Node 中代理时包含子域

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

我设置了一个简单的 HTTPS 服务器来处理以下情况:

  1. https://localhost:5000/ 的请求(在我的目录中具有匹配文件)通过 connect.static(__dirname) 提供服务。这对于像我的 index.html 和 CSS 文件这样的所有内容都非常有用,并且完全按照我的需要工作。

  2. https://localhost:5000/api 的请求应重定向到 https://subdomain.mydomain.com:443/api

代理正在通过 HTTPS 正确传输所有内容,并且 SSL 握手部分似乎完全按照我的预期工作。问题是我的 API 使用子域来确定要连接到哪个数据库以及要返回哪些数据。所以,我的 API 看到了请求

https://localhost:5000/api/something

而不是

https://subdomain.mydomain.com/api/something

并抛出一个错误,告诉我必须提供子域。

如何告诉 Node 代理在进行代理时转发(或使用)域/子域?

这是我的代码:

var fs = require('fs');
var connect = require('connect'),
https = require('https'),
httpProxy = require('http-proxy'),
options = {
key: fs.readFileSync('key.pem'),
cert: fs.readFileSync('cert.pem')
},
endpoint = {
host: 'subdomain.mydomain.com',
port: 443,
prefix: '/api',
target: { https: true }
};

var proxy = new httpProxy.RoutingProxy();
var app = connect()
.use(connect.logger('dev'))
.use(function(req, res, next) {
if (req.url.indexOf(endpoint.prefix) === 0) {
proxy.proxyRequest(req, res, endpoint);
} else {
next();
}
})
.use(connect.static(__dirname));

https.createServer(options, app).listen(5000);
console.log('Listening on port 5000');

最佳答案

以防万一有人遇到这个老问题,您应该使用 http-proxy changeOrigin 选项。

关于node.js - 在 Node 中代理时包含子域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17453542/

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