Mark Robbins
Mark Robbins

Reputation: 2457

Apache VirtualHost subdomain forwarding to Mercurial cgi script

I need to hook up my Mercurial server cgi script through an Apache VirtualHost subdomain along with authorization.

My apache is running on 80 and 91. Apache is serving Mercurial through

C:\wamp\bin\apache\Apache2.2.21\cgi-bin\hgweb.cgi and is accessable through

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

All well and good, it serves perfectly there. My target is to subdomain it as:

http://hg.my.com/

with no trailing cgi-bin/hgweb.cgi

I have gotten the following URL to work with the config given below:

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

... but it doesn't access the css and images properly (unlike above perfect service)

My config so far:

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>

Obviously I am using the time honored google-trial-and-error approach and am out of my depth here.

Thus, my energetic egos mindless determinination for self-reliance, which otherwise seems to serve so well, now exhausted and filled with animosity toward the problem at hand -- brings me here, hat in hand, to ask:

"Brother, can you spare a dime?"

Upvotes: 0

Views: 1595

Answers (2)

Iguatemi CG
Iguatemi CG

Reputation: 413

Just put a slash after the script: ScriptAlias /hg "/cgi-bin/hgweb.cgi/"

Upvotes: 1

Ry4an Brase
Ry4an Brase

Reputation: 78350

Why run apache on both 80 and 91? Is 91 just to serve up the static content? Unless I'm missing one of your requirements you shoudl be able to do whatever you need with something like this:

<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>

You shouldn't need a proxy, or separate rules for static (Mercurial will serve them up just fine).

Upvotes: 1

Related Questions