Назад | Перейти на главную страницу

Защита паролем и обслуживание сайта Apache по номеру порта?

Я пытаюсь настроить Пароль защищен разрабатываемая версия клиентского веб-сайта (управляемая Plone CMS).

Действующий сайт обслуживает порт 7373 и сопоставлен с общедоступным www-портом 80.

Сайт dev обслуживает порт 8383 и сопоставлен с портом 8111.

В настоящее время у меня нет доступа к DNS-записям клиентов, поэтому я не могу настроить поддомен, но IP и другие номера портов в порядке.

Однако я не могу понять, как защитить паролем сайт разработки, продолжая обслуживать действующий сайт. Меня особенно смущает то, что настройки защиты, похоже, предназначены только для папок, а не для сайтов?

Ниже приведен лучший гость, который у меня есть (на основе моего отсутствия apache-foo), но он обслуживает только действующий сайт, а не сайт разработчика, или запускает пароль!

<VirtualHost *:80>
 ServerAlias www.site.com

ProxyRequests Off
 <Proxy *>
   Order deny,allow
   Allow from all
 </Proxy>

  ProxyPreserveHost On
  ProxyPass / http://localhost:7373/VirtualHostBase/http/site.com:80/plonesite/VirtualHostRoot/
  ProxyPassReverse / http://localhost:7373/VirtualHostBase/http/site.com:80/plonesite/VirtualHostRoot/


</VirtualHost>

<VirtualHost 123.456.789.123:8111>

<Location /plonesitetest/>
  AuthType Basic
  AuthName "Dev Server"
  AuthUserFile "/home/admin/.htpasswd"
  Require valid-user
</Location>


ProxyRequests Off
 <Proxy *>
   Order deny,allow
   Allow from all
 </Proxy>

  ProxyPreserveHost On
  ProxyPass / http://localhost:8383/VirtualHostBase/http/123.456.789.123:8111/plonesitetest/VirtualHostRoot/
  ProxyPassReverse / http://localhost:8383/VirtualHostBase/http/123.456.789.123:8111/plonesitetest/VirtualHostRoot/


</VirtualHost>
Respost:
<VirtualHost *:8282>
    ServerName www.gpscoder.com
    ProxyPass / http://www.gpscoder.com:8080/
    ProxyPassReverse / www.gpscoder.com:8080/
    ProxyPreserveHost on
    <Proxy *>
        AuthType Basic
        AuthName "Dev Server"
        AuthUserFile "/var/www/xxxxxxx/.htpasswd"
        Require valid-user
    </Proxy>
</VirtualHost>

Ваши строки ProxyPass выглядят немного запутанными, поскольку номера портов указаны в середине URL-адреса. Неужели так настраивается сервер Plone для обработки входящего запроса (номера портов в именах файлов / каталогов)?

Прокси-файлы очень зависят от порядка. После быстрой проверки документов apache, похоже, что строки ProxyPass, вероятно, появляются раньше, чем строки Location, что может обходить аутентификацию. Как насчет чего-то вроде этого:

<Location /plonesitetest/>
  AuthType Basic
  AuthName "Dev Server"
  AuthUserFile "/home/admin/.htpasswd"
  Require valid-user
  ProxyPass http://localhost:8383/VirtualHostBase/http/123.456.789.123:8111/plonesitetest/VirtualHostRoot/
  ProxyPassReverse http://localhost:8383/VirtualHostBase/http/123.456.789.123:8111/plonesitetest/VirtualHostRoot/
</Location>

Это будет прокси-запросы для http://123.456.789.123:8111/plonesitetest/ на сайт Plone.

Живой сайт

<VirtualHost *:80>
    ServerName siteurl.com
    DocumentRoot "/path/to/live/site"
    ProxyPreserveHost On
    ProxyRequests Off
    Proxypass / http://siteurl.com:7373/
    ProxypassReverse / http://siteurl.com:7373/
</VirtualHost>

Тогда для вашего сайта разработчиков

<VirtualHost *:8111>
    ServerName siteurl.com
    DocumentRoot "/path/to/dev/site"
    ProxyPreserveHost On
    ProxyRequests Off
    Proxypass / http://siteurl.com:8383/
    ProxypassReverse / http://siteurl.com:8383/
    <Proxy *>
        AuthUserFile /home/admin/.htpasswd
        AuthType Basic
        AuthName "Dev Server"
        Require valid-user
    </Proxy>
</VirtualHost>

это поможет.

1-й результат для Google: vhost password.