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

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

2 ответа

Решение

Вы не сделаете этого, взглянув на 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

Другие вопросы по тегам