[web] IIS and an Apache Subversion repository
This may not be the right forum to post it in, and if its not, I'm sorry.
I've got a Windows 2000 Server box that has both IIS (port 80) and Apache2 (port 8080). The Apache server is for web access to a Subversion repository. Does anyone know a way I can create something like a virtual directory in IIS that would automatically forward itself over to the Apache repository directory.
www.myserver.com:8080/repos (accesses the Subversion repository).
what I want is something like
www.myserver.com/repos
which would automatically forward itself to www.myserver.com:8080/repos
I've no idea how to do this. You can almost certainly do it with third party mod_rewrite -like modules for IIS, however they are typically commercial pay-for software.
What I can suggest is that your run Apache on a different IP address from IIS, then you can run them both on port 80 (Provided you can persuade IIS not to bind to all interfaces).
Another option which might be reasonable is to run HTTPS via Apache on port 443 - unless of course, IIS is using that too.
One final option which might sound even more rediculous, is to move IIS to port 8080, and have Apache run on port 80 and redirect everything *not* in /repos to IIS. This is certainly feasible.
Mark
What I can suggest is that your run Apache on a different IP address from IIS, then you can run them both on port 80 (Provided you can persuade IIS not to bind to all interfaces).
Another option which might be reasonable is to run HTTPS via Apache on port 443 - unless of course, IIS is using that too.
One final option which might sound even more rediculous, is to move IIS to port 8080, and have Apache run on port 80 and redirect everything *not* in /repos to IIS. This is certainly feasible.
Mark
You can redirect using the 'location' field in the http header. I've no idea how to do this in a microsoft way, but in php it's as simple as calling the header func. I'd guess something similar is available for asp+IIS/whatever.
It's easier to set it up the other way - have Apache forward to IIS. Apache has some modules for this in the base install - the equivalent modules for IIS cost a lot of money, from what I've heard.
or you just create a directory under iss for that and stick an invisible frame forward (index.html) in that directory to forward to the apache.
WASHU:
Great idea Washu, but I think you're overlooking:
1. Subversion repositories over HTTP are not normally accessed via web browser - thus frameset or other tricks are ineffective
2. Presumably the OP is asking how to do this because their firewall(s) block port 8080 either incoming to the server or outgoing from the clients - your method would not help this, even if the frameset / redirect method actually did work.
I'm sure there are third party utils which can be bolted on to IIS to achieve this. What I'm not sure is whether any of them are free of charge.
Arild Fines:
I doubt it. More than likely there are cheapo ones which are something like $100 per server, maybe less - which of course is quite inexpensive when you've already paid something like $600 for a Windows server licence.
mrbastard:
Using a HTTP redirect of any type (which can be set up directly in the IIS manager, or via an ASP page), would suffer from the same problem as Washu's solution - i.e. it is pretty useless because the redirected requests would be blocked by someone's firewall (or perhaps merely not forwarded by their proxy).
Me / Arlid:
Of course having an important application served via two web servers is less than ideal. There are twice as many to go wrong, for a start. It might have some (minor) performance implications too.
But management of two web servers would definitely be the reason I wouldn't recommend using it for a production system (Unless you have a *really* tightly controlled change management and documentation system). It's easy to create broken configurations.
Mark
Great idea Washu, but I think you're overlooking:
1. Subversion repositories over HTTP are not normally accessed via web browser - thus frameset or other tricks are ineffective
2. Presumably the OP is asking how to do this because their firewall(s) block port 8080 either incoming to the server or outgoing from the clients - your method would not help this, even if the frameset / redirect method actually did work.
I'm sure there are third party utils which can be bolted on to IIS to achieve this. What I'm not sure is whether any of them are free of charge.
Arild Fines:
Quote:
the equivalent modules for IIS cost a lot of money
I doubt it. More than likely there are cheapo ones which are something like $100 per server, maybe less - which of course is quite inexpensive when you've already paid something like $600 for a Windows server licence.
mrbastard:
Using a HTTP redirect of any type (which can be set up directly in the IIS manager, or via an ASP page), would suffer from the same problem as Washu's solution - i.e. it is pretty useless because the redirected requests would be blocked by someone's firewall (or perhaps merely not forwarded by their proxy).
Me / Arlid:
Of course having an important application served via two web servers is less than ideal. There are twice as many to go wrong, for a start. It might have some (minor) performance implications too.
But management of two web servers would definitely be the reason I wouldn't recommend using it for a production system (Unless you have a *really* tightly controlled change management and documentation system). It's easy to create broken configurations.
Mark
This is more of a test server any and its not in any kind of professional environment. I was just curious if it was possible.
And really what I was looking for was if it was possible to basically just use the regular address, instead of having to type www.myserver.com:8080 everytime. It's not a big deal, I was just curious if it could be done.
[Edited by - Rattrap on September 9, 2005 9:27:07 AM]
And really what I was looking for was if it was possible to basically just use the regular address, instead of having to type www.myserver.com:8080 everytime. It's not a big deal, I was just curious if it could be done.
[Edited by - Rattrap on September 9, 2005 9:27:07 AM]
You could use svnserve and use svn://host/project/trunk/ URIs instead.
Or you could run Apache as the primary server and redirect things with mod_proxy, however it works. There's probably something like that for IIS too.
Edit: A reverse proxy, eh?
Or you could run Apache as the primary server and redirect things with mod_proxy, however it works. There's probably something like that for IIS too.
Edit: A reverse proxy, eh?
I had assumed that you were trying to get around firewall rules on your server's network, or clients' networks (clients networks being more likely).
Personally I run svn over https on port 8443, and it's not like it makes things any harder - after all, svn only needs to be told the URL of its repository once and thereafter remembers it.
Mark
Personally I run svn over https on port 8443, and it's not like it makes things any harder - after all, svn only needs to be told the URL of its repository once and thereafter remembers it.
Mark
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement