Apache перенаправить на другой порт - PullRequest
133 голосов
/ 17 декабря 2011

Я боролся с этим в течение некоторого времени и определенно делаю что-то не так.

У меня есть сервер 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 ]

0 голосов
/ 14 ноября 2016

Все это отличное понимание доступа к портам через доменные имена на виртуальных серверах. Не забудьте, однако, включить виртуальные серверы; это можно прокомментировать:

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>
0 голосов
/ 17 декабря 2011

Вам нужно 2 вещи:

  1. Добавить ServerAlias www.mydomain.com в вашу конфигурацию
  2. изменить ваш proxypass на ProxyPassMatch ^(.*)$ http://localhost:8080/example$1, чтобы, возможно, не допустить вмешательства mod_dir и конечных слешей.
0 голосов
/ 17 декабря 2011

Apache поддерживает виртуальные хосты на основе имен и IP. Похоже, вы используете оба, что, вероятно, не то, что вам нужно.

Я думаю, вы на самом деле пытаетесь настроить виртуальный хостинг на основе имен , и для этого вам не нужно указывать IP-адрес.

Попробуйте для привязки ко всем IP-адресам, если вы действительно не хотите виртуальный хостинг на ip . Это может быть в том случае, если сервер имеет несколько IP-адресов, и вы хотите обслуживать разные сайты по разным адресам. Наиболее распространенная установка - это (я бы предположил) виртуальные хосты на основе имен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...