2012-01-14 2 views
0

Мне нужно подключить свой скрипт cgi Mercurial server через субдомен Apache VirtualHost вместе с авторизацией.Переадресация поддомена Apache VirtualHost на скрипт cgi Mercurial

Мой апач работает на 80 и 91. Apache обслуживает Mercurial через

C: \ WAMP \ Bin \ Apache \ Apache2.2.21 \ CGI-BIN \ hgweb.cgi и через

, доступную

http://my.com/cgi-bin/hgweb.cgi и http://localhost/cgi-bin/hgweb.cgi

Все хорошо, он служит совершенно там. Моя цель заключается в субдомене как:

http://hg.my.com/

, без трейлинга CGI-BIN/hgweb.cgi

Я получил следующий URL-адрес для работы с конфигурацией приведен ниже:

http://hg.my.com/cgi-bin/hgweb.cgi

... но он не имеет доступа к CSS и изображения надлежащим образом (в отличие от более совершенного обслуживания)

Мой конфиг до сих пор:

ScriptAlias /hg "/cgi-bin/hgweb.cgi" 
<VirtualHost *:80> 
ServerName hg.my.com 
ServerAlias hg.my.com 

#ScriptAlias/"/cgi-bin/hgweb.cgi" 
# <Directory /> 
# Order Deny,Allow 
# Allow from all 
# </Directory> 

#  ProxyPass /stylesheets ! 
#  ProxyPass /javascripts ! 
#  ProxyPass /images ! 

ProxyPassMatch ^.*/static(/.*\.css)$ http://localhost:91/cgi-bin/hgweb.cgi/static/$1 
ProxyPassMatch ^.*/static(/.*\.js)$ http://localhost:91/cgi-bin/hgweb.cgi/static/$1 
ProxyPassMatch ^.*/static(/.*\.png)$ http://localhost:91/cgi-bin/hgweb.cgi/static/$1 
ProxyPassMatch ^.*/static(/.*\.gif)$ http://localhost:91/cgi-bin/hgweb.cgi/static/$1 

ProxyPreserveHost On 
ProxyPass/http://localhost:91/cgi-bin/hgweb.cgi 
ProxyPassReverse/http://localhost:91/cgi-bin/hgweb.cgi 
<Proxy *> 
    #DirectoryIndex hgweb.cgi 
    #ScriptAlias//hgweb.cgi 
# # Order Allow,Deny 
# # Allow from all 
    Order Deny,Allow 
    Allow from 127.0.0.1 
    AuthUserFile C:\wamp\.htpasswd 
    AuthName "Please Log In" 
    AuthType Basic 

    require user admin 
    require user dev 

</Proxy> 
</VirtualHost> 

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

Таким образом, мой энергичный эго бессмысленных determinination для самообеспечения, которые в противном случае, кажется, служить так хорошо, теперь исчерпаны и наполнена враждебностью к проблеме под руку - подводит меня здесь, шляпа в руке, чтобы спросить:

«Брат, вы можете избавиться от копейки?»

ответ

1

Зачем использовать apache как для 80, так и для 91? Является ли 91 просто для обслуживания статического контента? Если я не хватает одного из ваших требований вы shoudl быть в состоянии сделать все, что нужно что-то вроде этого:

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

ScriptAlias/"/cgi-bin/hgweb.cgi" 

<Location /> 
    Order Deny,Allow 
    AuthUserFile C:\wamp\.htpasswd 
    AuthName "Please Log In" 
    AuthType Basic 

    require user admin 
    require user dev 

</Location> 
</VirtualHost> 

Вы не нужен прокси-сервер, или отдельные правила для статических (Mercurial будет обслуживать их просто отлично).

+0

Я попробовал ваш код, но он задыхался на участке, так что я вернулся шаг за шагом от orig.conf и выяснил, как делать то, что я хотел - но мне пришлось поместить hgweb.cgi в DocumentRoot. Моя интуиция говорит мне, что это плохо, что это за история? –

+0

Пока у вас есть ScriptAlias, ни один файл не будет подан из корня документа, но вы, вероятно, можете просто использовать блок для авторизованного доступа к этому каталогу вместо использования DirectoryRoot. Что не работает в моем теге Location. Я не проверял синтаксис, но это лучший способ сделать это и работать. –

+0

Я использую wamp и Apache 2.2.21 - я не смотрел в журналы, но он не загружался. Я использую 'AddHandler cgi-script .cgi', а затем' Options ExecCGI' в ' '. Я не использую VH для hg.my.com, поскольку он, кажется, забирает меня туда для любого субдомена, который не соответствует моим другим VH, - что для меня все. Я предполагаю, что теперь я могу настроить его больше, так как я понимаю синтаксис VH немного больше.Я должен был «не-auth» других корней VH, которые у меня были, которые происходят позже в конфиге - я должен понять, что настройки каскадируются так? –

1

Просто поместите косую черту после сценария: ScriptAlias ​​/ HG «/cgi-bin/hgweb.cgi/»

Смежные вопросы