Назад | Перейти на главную страницу

Как перенаправить VirtualHost на основе имени на другой порт?

У меня установлена ​​виртуальная конечная точка sparql, которую я хочу сделать доступной через имя хоста (например, www.virtuosoexample.com). Проблема с виртуозом в том, что это не корень документа. Конечная точка инициируется демоном и становится доступной через исходный порт (например, 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> 

</VirtualHost>

Вы бы не сделали этого, используя Apache DocumentRoot. Вместо этого вы бы использовали mod_proxy и настроить Apache в качестве обратного прокси.

Вы бы добавили что-то вроде:

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

к вашей конфигурации. Убедитесь, что 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, что вы можете столкнуться с некоторыми проблемами, если ссылки, возвращенные виртуозом, не являются относительными. Если да, вы можете рассмотреть возможность использования mod_proxy_html или mod_substitute