Skip to main content

Django reverse proxy

Project description

dj-revproxy
-----------

Django reverse proxy. Allows you to proxy any website behind a prefix.

Requirements
------------

- `Python <http://www.python.org>`_ 2.x superior to 2.5 and Django
- `Django <http://www.djangoproject.org>`_ >= 1.2
- `restkit <http://www.couchdbkit.org>`_ >= 2.1.2

Installation
------------

Install from sources::

$ python setup.py install

Or from Pypi::

$ easy_install -U dj-revproxy

Configuration
-------------

Add `revproxy` to the list of applications::

INSTALLED_APPS = (
...
'revproxy'
)

Usage
-----

Since 0.2, there is 2 ways to use dj-revproxy.


1. Generic view
+++++++++++++++

You can use ``proxy_request`` function to proxy any url. You can use it in your code::

proxy_request(request, "http://example.com")

This code will proxy current request to ``http://example.com`` domain.
This function can take 4 parameters:

- destination: string, the proxied url. Required
- path: string, If no path is given it will try to detect the url using
the prefix if it's given. If not full request.path will be used in
finl destination url.
- prefix: string, the prrefix behind we proxy the path
headers: dict, custom HTTP headers
- no_redirect: boolean, False by default, do not redirect to "/"
if no path is given
- decompress: boolean, False by default. If true the proxy will
decompress the source body if it's gzip encoded.

It return an instance of ``django.http.HttpResponse``. You can use it directly
in your urls.py (which is the eaiest way to use). Ex::

(r'^gunicorn(?P<path>.*)', "revproxy.proxy_request", {
"destination": "http://gunicorn.org"
}),

2. Configure multiple proxy behind one generic prefix
+++++++++++++++++++++++++++++++++++++++++++++++++++++

To configure a proxy add a tupple to the REVPROXY_SETTINGS list::

REVPROXY_SETTINGS = [
("_google", "http://google.com"),
("_friendpaste", "http://www.friendpaste.com"),
("_couchdb", "http://127.0.0.1:5984"),
]

The configure your proxied urls automatically do something like this in
``urls.py``::
from django.conf.urls.defaults import *

import revproxy

urlpatterns = patterns('',
...
(r'^proxy/', include(revproxy.site_proxy.urls)),
)

Which will allow you to proxy Google on the url::

http://127.0.0.1:8000/proxy/_google

or even::

('^proxy/(?P<prefix>[^\/]*)(.*)', "revproxy.site_proxy"),

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dj-revproxy-0.2.0.tar.gz (10.9 kB view details)

Uploaded Source

File details

Details for the file dj-revproxy-0.2.0.tar.gz.

File metadata

  • Download URL: dj-revproxy-0.2.0.tar.gz
  • Upload date:
  • Size: 10.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for dj-revproxy-0.2.0.tar.gz
Algorithm Hash digest
SHA256 355d09a6b53b2f666d9c9a9cccc036701aef054a3bea0a3649ddcac1313ed06d
MD5 efc0ea36018a2e672949f402701a10d9
BLAKE2b-256 b1c3dc2ff67be608d096d9ac6432e9be3d4dc4a6020af194c68358faebc13b99

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page