【发布时间】:2022-01-05 04:33:37
【问题描述】:
假设项目 ID 为“8j11r05s16ni7z2f-52592443542” 我们可以访问这个https://domainname.com/8j11r05s16ni7z2f-52592443542 但在我的项目中,我必须将项目 ID 公开为子域,例如
https://8j11r05s16ni7z2f-52592443542.domainname.com
在node js中如何实现?
【问题讨论】:
假设项目 ID 为“8j11r05s16ni7z2f-52592443542” 我们可以访问这个https://domainname.com/8j11r05s16ni7z2f-52592443542 但在我的项目中,我必须将项目 ID 公开为子域,例如
https://8j11r05s16ni7z2f-52592443542.domainname.com
在node js中如何实现?
【问题讨论】:
我建议您使用其中一种方法:
webser 配置应该像参数一样捕获子域并将其粘贴到 url 段。
第二步的这种web服务器层可以自己写在node中,可以从npm上的任何现成的包中获取(独立或中间件,例如https://www.npmjs.com/package/http-proxy-middleware),也可以使用通用解决方案,如nginx、apache或其他。
我推荐使用 nginx。 如果您愿意,以下是有关如何实现它的文档: https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/
https://web.archive.org/web/20111119030118/http://wiki.nginx.org/HttpProxyModule#proxy_pass
How can query string parameters be forwarded through a proxy_pass with nginx? - 在这里您可以找到捕获示例
您设置反向代理,在 proxy_pass 部分处理捕获 id 并在其主体中添加捕获的参数
对于没有单独 Web 服务器的纯节点解决方案,您应该进行非常相似的操作:服务所有子域,处理根路由,像参数一样捕获子域,或者代理从步骤 1 路由,或者直接调用逻辑一个 id 参数。
以下是如何在此类根路由控制器中获取域: How to get the full URL in Express?
【讨论】: