我一直在尝试通过apache代理使用rendertron,但是所有基本路由都是“ null”,是否可能导致一些配置错误?如果您能帮助我,我将不胜感激。
Rendertron在默认情况下在端口3000上运行。而apache主机是这样的:
<VirtualHost *:80>
ServerName render.vool.xyz
ProxyRequests Off
<Proxy *>
#Require all granted
Order deny,allow
Allow from all
</Proxy>
<Location />
ProxyPass http://localhost:3000/
ProxyPassReverse http://localhost:3000/
Header set Access-Control-Allow-Origin "http://render.vool.xyz"
</Location>
</VirtualHost>
Rendertron服务已在render.vool.xyz url中启动并正在运行
再次感谢
我可以检测到与初始化中的协议相对应的斜杠已从url中删除
this.app.use(
route.get('/render/:url(.*)', this.handleRenderRequest.bind(this)));
我通过在rendertron类中添加以下方法并从handleRenderRequest方法中调用它来解决此问题
handleFixProtocol(href: string) {
if (href.startsWith('https://') || href.startsWith('https://') ) {
return href;
} else {
const parsedUrl = url.parse(href);
if (!parsedUrl.host) {
return parsedUrl.protocol + '/' + parsedUrl.path;
} else {
return parsedUrl.protocol + '//' + parsedUrl.host + parsedUrl.path;
}
}
}
async handleRenderRequest(ctx: Koa.Context, url: string) {
if (!this.renderer) {
throw (new Error('No renderer initalized yet.'));
}
url = this.handleFixProtocol(url);