我安装了 virtuoso sparql 端点,我想通过主机名(例如 www.virtuosoexample.com)来提供它。virtuoso 的问题在于没有文档根。端点由守护进程启动,并通过源端口(例如 localhost:1234/)提供
我知道如何设置指向文档根目录的虚拟主机,但我不知道如何对具有端口号的服务器执行此操作。
任何意见,将不胜感激。
下面是代码,说明如何使用文档根目录执行此操作。
我尝试将其(天真地)更改为 localhost:1234/sparql,但没有成功
<虚拟主机 *>
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>
</虚拟主机>
答案1
您不会通过弄乱 Apache 的 DocumentRoot 来实现这一点。相反,您会使用mod_proxy
并设置 Apache 作为反向代理。
你可以添加类似这样的内容:
ProxyPass / http://localhost:1234/sparql
ProxyPassReverse / http://localhost:1234/sparql
到您的配置。确保 Apache 已加载 mod_proxy。
这里是官方文档。
答案2
您可以使用 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