6

I have installed Hudson using apt-get, and the Hudson server is available on example.com:8080.

For example.com I use standard port *:80 and some virtual hosts set up this way:

# /etc/apache2/sites-enabled/subdomain.example.com
<Virtualhost *:80>
  ServerName subdomain.example.com
  ...
</Virtualhost>

Here is info about Hudson process:

/usr/bin/daemon --name=hudson --inherit --env=HUDSON_HOME=/var/lib/hudson --output=/var/log/hudson/hudson.log --pidfile=/var/run/hudson/hudson.pid -- /usr/bin/java -jar /usr/share/hudson/hudson.war --webroot=/var/run/hudson/war
  987 ?        Sl     1:08 /usr/bin/java -jar /usr/share/hudson/hudson.war --webroot=/var/run/hudson/war

How should I forward:

    http:// example.com:8080  

to:

    http:// hudson.example.com
takeshin
  • 1,431
  • 3
  • 19
  • 28

1 Answers1

11

You'll need to enable mod_proxy in Apache2 first. So run these commands as root, or sudo:

a2enmod proxy
a2enmod proxy_http

You'll then need to restart apache:

/etc/init.d/apache2 restart

Your HUDSON vhost file:

<VirtualHost *:80>
ServerName hudson.example.com
ProxyPass         /  http://localhost:8080/hudson
ProxyPassReverse  /  http://localhost:8080/hudson
ProxyRequests     Off

# Local reverse proxy authorization override
# Most unix distribution deny proxy by default 
# (ie /etc/apache2/mods-enabled/proxy.conf in Ubuntu)
<Proxy http://localhost:8080/hudson*>
  Order deny,allow
  Allow from all
</Proxy>
</VirtualHost>

Restart Apache one more time to commit the new vhost:

/etc/init.d/apache2 restart
  • Hudson Documention on running it behind Apache: LINK
  • Apache2.2 doc on running ProxyPass subdomains: LINK
David Rickman
  • 3,290
  • 17
  • 16
  • Thanks for the answer. This works (I only had to change :8080/hudson to :8080), but now the stylesheets are not loading. When I try to access them directly I get: `The proxy server could not handle the request GET /static/10302538/css/style.css. Reason: DNS lookup failure for: localhost:8080static` – takeshin May 10 '10 at 13:13
  • make sure **127.0.0.1 localhost** is in your /etc/hosts file. – David Rickman May 11 '10 at 01:30
  • It is: 127.0.0.1 localhost 192.168.1.2 example.com – takeshin May 12 '10 at 07:26
  • 2
    Found a possible answer. Put a trailing slash after the :8080. You removed it when you deleted the word "hudson" from the vhost config file. So it would look like:: **http://localhost:8080/** on applicable lines. Restart apache and let me know how that works out. – David Rickman May 13 '10 at 23:59