Перенаправление Apache на другой порт
я боролся с этим в течение некоторого времени, и я наверняка делаю что-то неправильно.
у меня есть сервер apache и сервер JBoss на одной машине. Я хотел бы перенаправить трафик для mydomain.com для JBoss localhost: 8080 / пример. DNS в настоящее время настроен для mydomain.com и он будет идти прямо к порту 80 при входе в браузер.
мой вопрос заключается в том, как перенаправить на другой порт, когда определенное доменное имя приходит к apache (в этом случае, "mydomain.com")?
<VirtualHost ip.addr.is.here>
ProxyPreserveHost On
ProxyRequests Off
ServerName mydomain.com
ProxyPass http://mydomain.com http://localhost:8080/example
ProxyPassReverse http://mydomain.com http://localhost:8080/example
</VirtualHost>
обновлено ж / предложения
- Все еще не переадресация на порт 8080
<VirtualHost *:80>
ProxyPreserveHost On
ProxyRequests Off
ServerName mydomain.com
ServerAlias www.mydomain.com
ProxyPass http://mydomain.com http://localhost:8080/example
ProxyPassReverse http://mydomain.com http://localhost:8080/example
</VirtualHost>
13 ответов:
вы должны оставить домен
http://example.comв ProxyPass и ProxyPassReverse и оставить его как/. Кроме того, вы должны оставить/В концеexample/туда, где он перенаправляет. Кроме того, у меня были некоторые проблемы сhttp://example.comиhttp://www.example.com- только www работал, пока я не сделал имя сервера www.example.com, и Сервералии example.com. дайте следующее движение.<VirtualHost *:80> ProxyPreserveHost On ProxyRequests Off ServerName www.example.com ServerAlias example.com ProxyPass / http://localhost:8080/example/ ProxyPassReverse / http://localhost:8080/example/ </VirtualHost>после внесения этих изменений добавьте необходимые модули и перезапустите apache
sudo a2enmod proxy && sudo a2enmod proxy_http && sudo service apache2 restart
Я решил эту проблему с помощью следующего кода:
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so <VirtualHost *:80> ProxyPreserveHost On ProxyRequests Off ServerName myhost.com ServerAlias ww.myhost.com ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ </VirtualHost>Я тоже:
a2enmod proxy_http
Я хотел сделать именно это, чтобы я мог получить доступ к Дженкинсу из корневого домена.
я обнаружил, что мне пришлось отключить сайт по умолчанию, чтобы заставить это работать. Вот именно то, что я сделал.
$ sudo vi /etc/apache2/sites-available/jenkinsи вставьте это в файл:
<VirtualHost *:80> ProxyPreserveHost On ProxyRequests Off ServerName mydomain.com ServerAlias mydomain ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ <Proxy *> Order deny,allow Allow from all </Proxy> </VirtualHost>Далее необходимо включить / отключить соответствующие сайты:
$ sudo a2ensite jenkins $ sudo a2dissite default $ sudo service apache2 reloadнадеюсь, что это поможет кому-то.
выяснил это методом проб и ошибок. Если в конфигурации указано имя сервера, то директива VirtualHost должна будет сделать то же самое. В следующем примере, awesome.example.com и amazing.example.com оба будут перенаправлены на какую-то локальную службу, работающую на порту 4567.
ServerName example.com:80 <VirtualHost example.com:80> ProxyPreserveHost On ProxyRequests Off ServerName awesome.example.com ServerAlias amazing.example.com ProxyPass / http://localhost:4567/ ProxyPassReverse / http://localhost:4567/ </VirtualHost>Я знаю, что это не совсем ответ на вопрос, но я помещаю его здесь, потому что это лучший результат поиска для переадресации портов Apache. Поэтому я думаю, что это поможет кому-то когда-нибудь.
вы должны убедиться, что прокси включен на сервере. Это можно сделать с помощью следующих команд:
a2enmod proxy a2enmod proxy_http service apache2 restart
Если вам не нужно использовать прокси для JBoss и mydomain.com:8080 можно "выставить" миру, то я бы это сделал.
<VirtualHost *:80> ServerName mydomain.com Redirect 301 / http://mydomain.com:8080/ </VirtualHost>
это может быть старый вопрос, но вот что я сделал:
В a .conf файл загружен apache:
<VirtualHost *:80> ServerName something.com ProxyPass / http://localhost:8080/ </VirtualHost>объяснение: слушайте на всех запросах к порту 80 локальной машины. Если бы я попросил"
http://something.com/somethingorother", перешлите запрос на "http://localhost:8080/somethingorother". Это должно работать для внешнего посетителя, потому что, согласно документам, он сопоставляет удаленный запрос с пространством локального сервера.Я запускаю Apache 2.4.6-2ubuntu2. 2, поэтому я не уверен, как "-2ubuntu2. 2" влияет на более широкую применимость этого ответа.
после внесения этих изменений добавьте необходимые модули и перезапустите apache
sudo a2enmod proxy && sudo a2enmod proxy_http && sudo service apache2 restart
просто используйте обратный прокси в конфигурации apache (напрямую):
ProxyPass /foo http://foo.example.com/bar ProxyPassReverse /foo http://foo.example.com/barсмотрите здесь документацию apache о том, как использовать mod
Apache поддерживает виртуальные хосты на основе имен и IP. Похоже, вы используете оба, что, вероятно, не то, что вам нужно.
Я думаю, что вы на самом деле пытаетесь установить виртуальный хостинг на основе имени, и для этого вам не нужно указывать IP-адрес.
попробуйте
привязать ко всем IP-адресам, если вы действительно не хотитевиртуальный хостинг на основе ip. Это может быть так, если сервер имеет несколько IP-адресов, а вы хотите обслуживать разные сайты по разным адресам. Наиболее распространенная настройка-это (я бы предположил) виртуальные хосты на основе имен.
вам нужно 2 вещи:
- добавить
ServerAlias www.mydomain.comв свой config- измените свой proxypass на
ProxyPassMatch ^(.*)$ http://localhost:8080/example, чтобы, возможно, сохранить mod_dir и конечные косые черты от вмешательства.
все это отличные идеи для доступа к портам через доменные имена на виртуальных серверах. Не забудьте, однако, включить виртуальные серверы; это может быть прокомментировано:
NameVirtualHost *:80 <Directory "/home/dawba/www/"> allow from all </Directory>мы запускаем WSGI с сервером Apache в домене sxxxx.com и сервер golang, работающий на порту 6800. Некоторые брандмауэры, похоже, блокируют доменные имена с портами. Это было наше решение:
<VirtualHost *:80> ProxyPreserveHost On ProxyRequests Off ServerName wsgi.sxxxx.com DocumentRoot "/home/dxxxx/www" <Directory "/home/dxxx/www"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> ScriptAlias /py/ "/home/dxxxx/www/py/" WSGIScriptAlias /wsgiprog /home/dxxxx/www/wsgiprog/Form/Start.wsgi </VirtualHost> <VirtualHost *:80> ProxyPreserveHost On ProxyRequests Off ServerName sxxxx.com ServerAlias www.sxxxx.com ProxyPass / http://localhost:6800/ ProxyPassReverse / http://localhost:6800/ </VirtualHost>
мой apache слушает 2 разных порта,
Listen 8080 Listen 80я использую 80, когда мне нужен прозрачный URL-адрес и не ставлю порт после URL-адреса полезно для сервисов google, которые не позволяют локальный url?
но я использую 8080 для внутренней разработки, где я использую порт в качестве ссылки для "среды разработки"
Это тоже работает в ISPConfig. В списке веб-сайтов войдите в домен, перейдите на вкладку Параметры, добавьте следующие строки:;
ProxyPass / http://localhost:8181/ ProxyPassReverse / http://localhost:8181/затем перейдите на сайт и wolaa:) это тоже работает протокол HTTPS.
Comments