Page 1 of 3

Integrating Subsonic into existing Apache Web Space

PostPosted: Mon Feb 09, 2009 6:08 pm
by organon
If anyone would like to integrate their Subsonic interface into their regular web space (as opposed to people going to your host on the specific port you have configured for Subsonic - e.g. http://www.yourdomain.org:8080), a couple of lines in the Apache config file if you have enabled the Apache mod_proxy module (I'm less familiar with IIS, but there appears to be several reverse proxy tools out there for it), and you're off to the races.

I run Subsonic on a CentOS 5 Linux host, running Apache 2.2

The default config file for the Apache instance (adjust as per your Apache configuration) is: /etc/httpd/conf/httpd.conf
I have installed Subsonic under /opt/subsonic, and the *NIX shell script to start the server is therefore: /opt/subsonic/subsonic.sh

I have added the following two lines to my Apache config:
Code: Select all
ProxyPass           /groovy http://localhost:8080/groovy
ProxyPassReverse    /groovy http://localhost:8080/groovy


That configuration needs to be matched in the Subsonic config file with this directive:
Code: Select all
SUBSONIC_CONTEXT_PATH=/groovy


Reload the Apache config file:
Code: Select all
service httpd reload
in CentOS, and restart the Subsonic server, and you should be able to get at your Subsonic interface via:

http://www.yourdomain.org/groovy

This has one effect that people may like or dislike. Whereas the Players in Subsonic may be associated with a dynamic IP of the user if they are accessing the application directly (e.g. at http://www.yourdomain.org:8080 in my above example), all players will be considered as coming from the loopback (127.0.0.1) address as far as Subsonic is concerned when configuring this kind of setup.

On the security side, it's one less port you need to expose directly, and there are many of the mod_security directives you can use to help protect the server/application anyway.

Good luck!

PostPosted: Sun Feb 22, 2009 5:20 pm
by donpearson
one thing, in the windows install you set the Subsonic config
Code: Select all
SUBSONIC_CONTEXT_PATH=/groovy


in the program that runs in the toolbar

PostPosted: Fri Mar 06, 2009 5:17 pm
by mancubus220
does this method work with tomcat as well or is there a more preferred way to do it for tomcat?

PostPosted: Sat Apr 18, 2009 9:35 pm
by jonathanroz
Has anyone that has implemented this observered any performance or server utilization issues after switching to using a proxy?

I am currently using it only in a limited fashion for people that have problems accessing my site from a corporate LAN due to the non standard port.

PostPosted: Sun Apr 19, 2009 9:28 am
by jigsaw
jonathanroz wrote:Has anyone that has implemented this observered any performance or server utilization issues after switching to using a proxy?

I've used it for some time now and haven't experienced any problems with performance. I also have experience using mod_proxy at my business which has websites with thousands of connections daily, and we don't see any performance issues there either..

PostPosted: Fri May 29, 2009 8:25 am
by kamaradclimber
hello,

i've followed instructions for setting up subsonic on my apache2 server (debian)
but when i want to access to http://myip/subsonic the server answers with 403 error

i don't understand what to do

in a nutshell, here's my conf:

files are in /opt/subsonic
subsonic_home is /var/subsonic
context path is /subsonic

my etc/apache2/httpd.conf is composed of two lines :
ProxyPass /subsonic http://localhost:8080/subsonic
ProxyPassReverse /subsonic http://localhost:8080/subsonic


thank you for help :-)

PostPosted: Fri May 29, 2009 4:16 pm
by jonathanroz
Kamaradclimber,

If you are using Apache2 instead of Apache2.2 then there are some different steps.

First you have to enable the proxy_http module in Apache2

Debian instructions to do this are here: http://www.debuntu.org/book/export/html/72

After the mod is enabled you should see the below 3 files in your mods_enabled folder
proxy.conf
proxy.load
proxy_http.load

Open your proxy.conf file and edit it so it is similar to mine. Of course you have to update the IP, Port and Path to match your configuration.

I have 2 Subsonics running, one on the local machine and one on a different machine. You can see examples of each one in my config file.

Code: Select all
<IfModule mod_proxy.c>
        #turning ProxyRequests on and allowing proxying from all may allow
        #spammers to use your proxy to send email.

ProxyRequests Off



<Proxy *>



Order deny,allow

Allow from all



</Proxy>



ProxyPass /music http://localhost:88/music

ProxyPassReverse /music http://localhost:88/music

ProxyPass /subsonic http://192.168.1.45:89/subsonic

ProxyPassReverse /subsonic http://192.168.1.45:89/subsonic

        # Enable/disable the handling of HTTP/1.1 "Via:" headers.
        # ("Full" adds the server version; "Block" removes all outgoing Via: headers)
        # Set to one of: Off | On | Full | Block

        ProxyVia On
</IfModule>



I hope this helps

PostPosted: Tue Jun 02, 2009 2:25 pm
by kamaradclimber
thank you for your answer

i've activated the proxy_http mod and used your conf file

but it still does not work, even if the issue has changed:
Service Temporarily Unavailable

The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.

PostPosted: Tue Jun 02, 2009 10:38 pm
by jonathanroz
Kamaradclimber,

That is actually a good thing that your error changed because that means the Proxy is at least trying to forward the traffic but it cannot get there so is giving an error back.

Sometimes I get that when I am trying to access the subsonic I have running in Tomcat and have to stop Tomcat and wait 2 or 3 minutes and the start it again.

A couple of thoughts.

1) I would make sure you remove the lines you added in httpd.conf just to make sure that is not causing the issue.

2) I am assuming that you still have these listed assuming you are using subsonic as your path for the Subsonic server and not /music or /

I also am assuming that the subsonic service is running on the machine your Apache server is on.

ProxyPass /subsonic http://localhost:8080/subsonic
ProxyPassReverse /subsonic http://localhost:8080/subsonic

If so can you open a browser to http://localhost:8080/subsonic and get to the service? If not then you might have another issue.

3) I have seen a lot of people have issues with port 8080 because of a conflict with the management port for their router. You might want to try a different port.

PostPosted: Wed Jun 03, 2009 7:00 am
by kamaradclimber
thank you again for your answer, i appreciate your support :-)

unfortunately, the issue has come back to the first point and i'm unable to fix it again

i think i'm going to purge everything of apache and restart from scratch, is it a good idea ?

PostPosted: Sun Jun 07, 2009 9:08 am
by kamaradclimber
ok, i've started from scratch (purge apache and reinstall)

subsonic is in /var/subsonic/standalone

subsonic.sh is:
SUBSONIC_HOME=/var/subsonic/standalone
SUBSONIC_HOST=0.0.0.0
SUBSONIC_PORT=8080
SUBSONIC_CONTEXT_PATH=/music
SUBSONIC_MAX_MEMORY=64
SUBSONIC_PIDFILE=

my httpd.conf (apache user conf file) contains
ProxyPass /music http://localhost:8080/music
ProxyPassReverse /music ...

there are two errors messages:

fist when i'm trying to connect to http://impossible.doesntexist.com:8080 (my domain)
HTTP ERROR: 404

NOT_FOUND

RequestURI=/

Powered by jetty://


then:

if i try to reload apache conf with etc/init.d/apache2 reload (or restart)

i get :
Reloading web server config: apache2[Sun Jun 07 11:09:09 2009] [warn] worker http://localhost:8080/music already used by another worker


you said that's great when error messag changes, so what is the problem now ?
thanks you again for your help, i think we will succeed :-)

PostPosted: Sun Jun 07, 2009 1:54 pm
by jonathanroz
So are you able to access subsonic from the local machine by going to http://localhost:8080/music

PostPosted: Sun Jun 07, 2009 2:48 pm
by kamaradclimber
actually yes
that's a good point

PostPosted: Sun Jun 07, 2009 9:59 pm
by jonathanroz
OK I am able to get to your site using :8080 which is good.

Did you say you added your ProxyPass statement to your httpd.conf file?

My setup in Apache 2 has the httpd.conf file complete empty. I dont use that for anything (not 100% sure if that is how it has to be but it works for me). I have my proxy info in the proxy.conf file located in the mods-enabled folder.

Can you remove whatever you added in httpd.conf and update your proxy.conf file to show exactly what I have below.

Afterwards you will have to restart Apache.

Code: Select all
<IfModule mod_proxy.c>
        #turning ProxyRequests on and allowing proxying from all may allow
        #spammers to use your proxy to send email.

ProxyRequests Off


<Proxy *>


Order deny,allow

Allow from all


</Proxy>


ProxyPass /music http://localhost:8080/music

ProxyPassReverse /music http://localhost:8080/music


        # Enable/disable the handling of HTTP/1.1 "Via:" headers.
        # ("Full" adds the server version; "Block" removes all outgoing Via: headers)
        # Set to one of: Off | On | Full | Block

        ProxyVia On
</IfModule>

PostPosted: Mon Jun 08, 2009 5:47 am
by kamaradclimber
there is no change, the same error message appears if i try to restart the apache server
(but it doesnt stop if i say so)

it doesnt matter, if subsonic works i'm happy
thanks you a lot !