Перенаправление 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>
после внесения этих изменений добавьте необходимые модули и перезапустите Апач
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 локальной машины. Если я попрошу ... --2-->", перешлите этот запрос на"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-адрес.
попробуйте
вам нужно 2 вещи:
- добавить
ServerAlias www.mydomain.com
в свой config - измените свой proxypass на
ProxyPassMatch ^(.*)$ http://localhost:8080/example
, возможно сохранить mod_dir и завершающие слеши из interferring.
все отличные идеи для доступа к портам через доменные имена на виртуальных серверах. Не забудьте, однако, включить виртуальные серверы; это может быть прокомментировано:
NameVirtualHost *:80
<Directory "/home/dawba/www/">
allow from all
</Directory>
мы запускаем WSGI с сервером Apache в домене sxxxx.com и сервер golang, работающий на порту 6800. Некоторые брандмауэры, похоже, блокируют доменные имена с портами. Вот наше решение:--3-->
<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.