Feature #1427
Support reverse proxy
100%
Description
I've tried to create a reverse proxy in Apache to make tvheadend accessible as part of my home website but this does not seam to work.
My proxy configuration:
<Location /tvheadend> ProxyPass http://localhost:9981 ProxyPassReverse http://localhost:9981 </Location>
If I surf to http://myserver/tvheadend it returns to page http://myserver/extjs.html which results in a 404 because that page obviously does not exist.
It should return to http://myserver/tvheadend/extjs
I'm willing to make the needed changes if someone can point me in the right direction.
History
Updated by Adam Sutton about 12 years ago
- Category set to 11
There are quite a few places that would probably need to be edited to make it work. You also might need a root path configuration variable (though it might be easy enough to calculate it from the requests).
But this isn't actually necessary to get an apache rev proxy working. I personally maintain a small dev server that uses a single rev proxy (apache) to front a whole host of services, some of which are not "proxy friendly". But apache has options to work around this.
Unfortunately I don't have access to the machine from home so I can't provide examples at the moment.
Adam
Updated by ruud - about 12 years ago
Hi, I have setup OpenVPN on my server. Using that I can access (not only) my tvheadend server from the outside world in a secure way: from my smartphone I have full access to the tvheadend web UI.
Using this solution offers the same advantages to all other functionalities on my server.
Not sure what your functional requirements for the reverse proxy are, but thought I'd share my setup :)
regards,
Ruud.
Updated by Endre Szabo about 12 years ago
I'm making tvheadend available to SSL (certificate verified) clients with the following NGINX configuration, hope it helps:
ssl_certificate /etc/nginx/tvheadend.something.hu.pem; ssl_certificate_key /etc/nginx/tvheadend.something.hu.pem; ssl_client_certificate /etc/nginx/rootca.pem; ssl_protocols TLSv1; ssl_verify_client on; tcp_nopush on; upstream tvh { server 127.0.0.1:9981; } server { listen [::]:443; ssl on; server_name tvheadend.something.hu; location / { proxy_pass http://tvh; } }
Updated by Ronald van Eijck about 12 years ago
I've done some research on apache's mod_proxy. According to the information I found my apache proxy configuration is correct but the initial redirect from tvheadend is not according to the specifications, it returns a 302 header with a relative location (/extjs.html) where it should return a fully qualified URL, in my case http://localhost:9981/extjs.html.
The redirect call is initiated in src/webui/webui.c function page_root.
This function calls src/http.c function http_redirect
I think the http_redirect function could be rewritten to combine the supplied location (/extjs.html) with the server part of the url (in my example http://localhost:9981). I have not found out how to retrieve the server part of the url from the http_connection structure used for all http communication.
I'm also not sure if this should remain a feature request or a bug report, if the conclusion I get from the apache docs that the relocation header should contain a full URL then this is a (small) bug.
Updated by Cédric Dupont about 12 years ago
Hi,
I'm in the same case as Ronald. I use a main Apache vhost to get multiple access to services using ProxyPass on directory.
TVHeadEnd is not right with this. Get same error.
The point is, a lot of the others apps I run can have an option set for the contect path, so instead of running in / they can be running in /context_path/ and this make them working with apache proxy.
What Endre gives is not the same type of proxy it's a tvheadend.domain.tld and not domain.tld/tvheadend (not same use)
Updated by Adam Sutton about 12 years ago
- Status changed from New to Accepted
- Target version set to 3.4
This is possible with Apache HTTP rewriting, I know I've had to do it before. However I couldn't figure out how to do it (easily) in nginx though I'm sure I had a go once in the past.
Anyway, since I want to now put my own TVH server behind my nginx rev proxy I thought I'd have a quick look and from what I can see the mods are pretty simple and I'll post something in a bit.
Adam
Updated by Adam Sutton about 12 years ago
- Status changed from Accepted to Fixed
- % Done changed from 0 to 100
Applied in changeset commit:dd379084c02367ed4171476ac9d98262b4eb85b8.
Updated by Cédric Dupont almost 12 years ago
Hi Adam,
Is the fix present in the packaged versions ?
Cannot wait to try it behind a proxy
Thanks,
Cédric
Updated by Adam Sutton almost 12 years ago
no, its only available in master. It will be available in 3.4.
Adam