Перенаправить интерфейсный URL-адрес на другой серверный веб-сервер - PullRequest
1 голос
/ 04 мая 2011

Я использую фреймворк, который использует полный стек для отображения всех своих веб-страниц.Это стандартно работает на порту 9000 .Очень хорошо, но при запуске в производство сервер, похоже, блокирует все, кроме нескольких стандартных портов.

Поэтому, поэтому, фреймворк (Play framework), советует вам сделать это на вашем интерфейсном веб-сервере (вВ моем случае Apache2).

file: play.conf

<VirtualHost *:80>
  ServerName http://avon.ugent.be
  CustomLog /var/www/log/proxy-access.log common
  ErrorLog /var/www/log/proxy-error.log
  ProxyPreserveHost On
  DocumentRoot /var/www
  <Location /dev/app>
    AuthType Basic
    AuthName "Test Omgeving"
    AuthUserFile /var/trac/htpasswd
    Require valid-user

    ProxyPass http://127.0.0.1:9000/
    ProxyPassReverse http://127.0.0.1:9000/
  </Location>
</VirtualHost>

Для этого, конечно, требуется модуль mod_proxy , который активируется с помощью a2enmod mod_proxy.(Я запускаю это в дистрибутиве Debian)

Идея состоит в том, чтобы запустить два веб-сервера, один интерфейсный и один серверный с приложением.Перезагрузка веб-сервера apache работает нормально, сайт включен и все, но когда я перехожу к URL-адресу http://my.website.com/dev/app, он отображает 404 ... Предложения, что не так?


EDIT3:После 10 с лишним часов попыток все сводится к следующему: я нашел команду отладки (наконец: p), и это вывод:

apache2ctl -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
         default server avon.ugent.be (/etc/apache2/sites-enabled/000-default:1)
         port 80 namevhost avon.ugent.be (/etc/apache2/sites-enabled/000-default:1)
         port 80 namevhost avon.ugent.be (/etc/apache2/sites-enabled/play.conf:1)
Syntax OK

, который указывает, что виртуальный сервер действительно добавляется в конфигурацию,Но, тем не менее, он отображает 404. Теперь, где-то я читал, потому что в этом пути нет index.html.Это необходимо, если вы просто хотите использовать обратный прокси-сервер?

Ответы [ 2 ]

2 голосов
/ 04 мая 2011

Для начала, пожалуйста, попробуйте использовать Location вместо Directory. Каталог используется для определения путей к каталогам в файловой системе, а не путей относительно корня документа.

<Location '/dev/app'>
  AuthType Basic
  AuthName "Test Omgeving"
  AuthUserFile /var/trac/htpasswd
  Require valid-user
</Location>
1 голос
/ 04 мая 2011

Попробуйте следующее.Он должен запросить имя пользователя / пароль и затем передать запрос на http://127.0.0.1:9000.. В моем случае Apache выдает "Service Temporarily Unvavailable", который вы должны получить также, если выключите приложение, работающее на порту 9000

<VirtualHost *:80>
    ServerName my.website.com

    <Location /dev/app>
      AuthType Basic
      AuthName "Test Omgeving"
      AuthUserFile passwd/.htpasswd
      Require valid-user

      ProxyPass http://127.0.0.1:9000
      ProxyPassReverse http://127.0.0.1:9000
    </Location>
</VirtualHost>

Если вы все еще получаете 404, можете ли вы подтвердить, что его отправляет не бэкэнд-сервер?

...