# Simple inbound HTTP server

,

I wanted to show a webpage I've been toying with to a friend today. The project is in Django and I didn't want to take the time to deploy it to a permanent host like heroku. I know it is easy to do that, but I was just feeling lazy. I came up with a cool trick today for doing exactly this. I have a server that I leave on 100% of the time.

I realized that I could use this server as a simple proxy and forward any web requests that came to a special domain.

Using SSH I created a reverse tunnel that made my localhost's 8000 port availble on the remote machine on port 1234.

ssh -R 1234:127.0.0.1:8000 ${HOST}  This server runs nginx and has the ability to handle vhosts. I made a very simple nginx entry that forwarded proxy.mydomain.com to localhost:1234. It looked something like this:   1 2 3 4 5 6 7 8 9 10 server { listen 80; server_name ~^(www\.)?proxy.example.com$; access_log /var/log/nginx/proxy.access.log; location / { proxy_pass http://127.0.0.1:1234; } } 

I wrapped all this up in a simple little shell script and put it on my 'PATH'

  1 2 3 4 5 6 7 8 9 10 11 12 #! /usr/bin/env bash if [ ! -z $1 ] then port=$1 else port=8000 fi echo "Connecting to server to forward port ${port} at \ http://proxy.example.com/" ssh -R 1234:127.0.0.1:${port} example.com \ "echo 'Forwarding... press enter to exit'; read" 

Now when I run forward_http from the command line, it will automagically forward my local port 8000 to the proxy domain I set up.