SVN and Squid

February 6, 2008 · 5 Comment s

We run a number of servers behind the scenes; Version Control (SVN), Trac, ColdFusion (dev and staging), Database (SQL Server, MySQL, PostgreSQL) ...

We've now deployed a proxy server in front of it all. In this case we've deployed Squid to act as a reverse proxy.

So, basically everything now goes through the Squid server, and it routes our requests based on the domain name requested.

It was all fairly straight forward to set up, except we encounted a slight problem when it came to committing changes back into SVN.

svn: Commit failed (details follow):
svn: MKACTIVITY of '/path/to/svn/repo/!svn/act/20b34b89-e624-0410-bfb9-b7cf8f28e335': 400 Bad Request (http://mydomain.com)

For the life of me I couldn't figure out what was going on. As well as the introduction of Squid, we had also upgraded SVN and Trac and I assumed it was the SVN upgrade that was causing the issue.

As it turns out, it was Squid. You have to make a slight change when you're using a proxy with SVN.

As they say, Read the F*%king Manual!!! http://subversion.tigris.org/faq.html#proxy

Tags: Subversion · Squid

5 response s so far ↓

  • 1 Simon whittaker // Feb 6, 2008 at 8:40 PM

    Just out of interest, what benefit do you get from using a reverse proxy in front of the internal systems like this? I can understand in front of external systems but am just interested in the reasoning.
  • 2 Andy Allan // Feb 6, 2008 at 9:50 PM

    1) Security. We don't folks to have direct access to the internal systems. Our clients use the Trac system, and some have access to SVN.
    1.1) It's a single point of access, and that's all we need to secure (OK we secure other things, but hopefully you get the point).
    2) Distribute Load
    3) URL rewriting. I can have requests going to different servers behind the scenes based on URLs, and you don't need to know or care about it.
    3.1) Different applications running on different OS/Hardware
    4) Management. I can change servers, DNS, etc behind the scenes. The "outside client", albeit us, don't get affected by changes.

    I'm sure others can jump in with more ....
  • 3 cornice london // Aug 5, 2008 at 11:51 AM

    URL rewriting. I can have requests going to different servers behind the scenes based on URLs, and you don't need to know or care about it.
  • 4 warhammergold // Nov 20, 2008 at 3:43 PM

    <A href="http://www.vipwarhammergold.com/"; target=_blank><FONT =4><B>warhammer gold</B></FONT></A> <FONT =4></FONT><A href="http://www.vipwarhammergold.com/news/news.html"; target=_blank><FONT size=4><B>buy warhammer gold</B></FONT></A><BR><A href="http://www.bestwarhammer.com/"; target=_blank><FONT size=4><B>warhammer gold</B></FONT></A><FONT size=4></FONT> <A href="http://www.bestwarhammer.com/news/news.html"; target=_blank><FONT size=4><B>buy warhammer gold</B></FONT></A><BR><A href="http://www.aocsale.com/"; target=_blank><FONT size=4><B>aoc gold</B></FONT></A> <FONT size=4></FONT><A href="http://www.aocsale.com/aoc-news/"; target=_blank><FONT size=4><B>age of conan gold</B></FONT></A><BR><A href="http://www.game4power.com/"; target=_blank><FONT size=4><B>wow gold</B></FONT></A> <FONT size=4></FONT><A href="http://www.game4power.com/news/"; target=_blank><FONT size=4><B>buy wow gold</B></FONT></A><BR><A href="http://www.wowgoldone.com/"; target=_blank><FONT size=4><B>wow gold</B></FONT></A> <FONT size=4></FONT><A href="http://www.wowgoldone.com/"; target=_blank><FONT size=4><B>buy wow gold</B></FONT></A><BR><A href="http://www.game4power.com/"; target=_blank><FONT size=4><B>world of warcraft gold</B></FONT></A> <FONT size=4></FONT><A href="http://www.wowgoldone.com/"; target=_blank><FONT size=4><B>world of warcraft gold</B></FONT></A><BR><A href="http://www.gamelevelup.com/"; target=_blank><FONT size=4><B>wow power leveling</B></FONT></A><BR><A href="http://itemstores.com/"; target=_blank><FONT size=4><B>wow item</B></FONT></A>
  • 5 yiwu // Aug 8, 2009 at 6:14 AM

    This is my first time comment at your blog.
    Good recommended website.

Leave a Comment

Leave this field empty: