如何将基于名称的 VirtualHost 重定向到不同的端口?

如何将基于名称的 VirtualHost 重定向到不同的端口?

我安装了 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

相关内容