如何将基于名称的VirtualHostredirect到不同的端口?

我安装了一个virtuoso sparql端点,我想通过一个主机名(例如www.virtuosoexample.com)提供这个端点。 与virtuoso的东西是没有文档的根。 端点由守护进程启动,并通过源端口(例如localhost:1234 /)提供。

我知道如何设置一个虚拟主机指向一个文档根,但我不知道如何做一个端口号的服务器。

任何意见,将不胜感激。

下面是代码,我将如何做一个文档根。

我试图改变(天真)到localhost:1234 / sparql,但没有奏效

<VirtualHost *>

ServerName www.virtuosoexample.com <www.virtuosoexample.com> ServerAlias www.virtuosoexample.com <www.virtuosoexample.com> ErrorLog /var/log/apache2/error.wp-sparql.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/access.wp-sparql.log combined DocumentRoot /var/www/endpoint/sparql/ <Directory /var/www/endpoint/sparql> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> 

</虚拟主机>

你不会用Apache的DocumentRoot来做这件事。 相反,您可以使用mod_proxy并将Apache设置为反向代理。

你会添加像这样的东西:

 ProxyPass / http://localhost:1234/sparql ProxyPassReverse / http://localhost:1234/sparql 

到你的configuration。 确保mod_proxy是由Apache加载的。

这是官方文件 。

你可以使用mod_proxy。 例如:

 NameVirtualHost * <VirtualHost *> ServerName www.virtuosoexample.com ProxyRequests Off ProxyPass / http://localhost:1234/ ProxyPassReverse / http://localhost:1234/ </VirtualHost> 

有关更多详细信息,请参阅apache文档 。

请注意,如果您希望将http://www.virtuosoexample.com/代理到http://localhost:1234/sparql ,那么如果virtuoso返回的链接不是相对链接,则可能会遇到一些问题。 如果是这样,你可以考虑使用mod_proxy_html或mod_substitute