Прямо сейчас я делаю это с помощью следующих директив Apache для сопоставления имен хостов номерам портов:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName local.stardust-game.com
ProxyPass / http://127.0.0.1:5555/ retry=0
</VirtualHost>
<VirtualHost *:80>
ServerName local.wdi-toolbelt.com
ProxyPass / http://127.0.0.1:9992/ retry=0
</VirtualHost>
(На моей машине разработки local.*
домены установлены на 127.0.0.1
в моем файле hosts.)
Я просто ищу удобный способ запустить несколько приложений произвольного происхождения (некоторые из них - Ruby, некоторые - Python и т.д.), доступ к которым осуществляется через порт 80, но с разными именами хостов.
Apache кажется излишним, и я хочу проверить свою интуицию, чувствуя, что есть гораздо более простой способ сделать это.
Я предполагаю, что решение должен включать проверку Host
заголовок всех входящих запросов, поскольку без этого невозможно узнать, для какого процесса предназначен запрос, но, опять же, запуск Apache кажется излишним. просто для выполнения пересылки этого запроса. Я буквально не использую его ни для чего другого - просто проксирую запросы к разным процессам, запущенным на одной машине.
nginx
более легкое или, возможно, более простое в настройке решение?Host
заголовок?Если вы используете это для тестирования в локальной сети с низким уровнем трафика, вам нечего будет получить, настроив nginx, хотя nginx более эффективен, чем Apache.
Если вы используете Apache, вам, вероятно, потребуется добавить директиву ProxyPassReverse.
На вашем месте я бы не стал тратить слишком много времени на прокси. Возможно, вы слишком оптимизированы, и ваше время лучше потратить на разработку приложения. Apache - вполне приемлемое решение, но вы можете посмотреть на nginx или специальный прокси, такой как pound.
http://www.unixmen.com/pen-a-pound-2-great-opensource-server-load-balancing-tools-for-linux/