nizam.sp
nizam.sp

Reputation: 4062

Hosting a django project behind proxypass

I have hosted to django admin project on a local machine X. http://10.4.x.y/myapp/admin works. I have an external IP on another machine Y and i am doing a proxy pass from the Y to X.

http://proxypassname.com/myapp/admin works. But, When i click the link "Save" or "Save continue editing" button after editing in admin page, it redirects to local machine ip (i.e. http://10.4.x.y/myapp/blah_blah_blah).

How to make sure that the django project redirects to proxypass name instead of local IP?

Upvotes: 3

Views: 3015

Answers (2)

nizam.sp
nizam.sp

Reputation: 4062

I did these two things and it worked.

  1. Whenever you add a ProxyPass, you should add ProxyPassReverse

  2. SITE_ID should be set to the domain where you want to point this django project.

Upvotes: 1

Zappatta
Zappatta

Reputation: 422

This is happening because the admin redirects to IP it thinks it has. It gets in in the HTTP request's header.

However, the fix is very easy. Assuming you proxy server implements the X-Forwarded-For standard, it could be easily fixed.

in your settings.py, simply set:

USE_X_FORWARDED_HOST = True

and restart your Django.

If that doesn't work, you can try to see if your proxy sets a different kind of header, and write a middleware that does the same thing. It's the first example on Django's documentation chapter on middleware

Upvotes: 3

Related Questions