8👍
I had this problem to.
ProxyPreserveHost On
<Location "/my-project/">
ProxyPass http://127.0.0.1:18173/my-project/
ProxyPassReverse http://127.0.0.1:18173/my-project/
RequestHeader set SCRIPT_NAME /my-project
RequestHeader set X-FORWARDED-PROTOCOL ssl
RequestHeader set X-FORWARDED-SSL on
</Location>
To enable the WSGI app to construct an absolute url we need:
ProxyPreserveHost On
, so theHost:
header gets passed and the app knows the Hostname the client sees us at.- Add a
SCRIPT_NAME
header so the app knows where its root is. - Set
X-FORWARDED-
headers as needed. I’m using ssl too, so I have to tell the app it should use thehttps
scheme.
I use <Location>
directives, because I do a lot more stuff on this vhost. But you can easily rewrite this by passing path
arguments to the ProxyPass
and ProxyPassReverse
directives.
NB: ProxyRequests
should be Off, unless you want a forward proxy too. If you’re reading this you probably only want a reversed proxy.
Django specific note: settings.LOGIN_URL
is used as is, so you’ll need to prepend the SCRIPT_NAME
to it yourself.
2👍
Did you try this? I added my-project to the url you are proxying too.
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyRequests On
ProxyPass /my-project/ http://127.0.0.1:18731/my-project/ retry=0
ProxyPassReverse /my-project/ http://127.0.0.1:18731/my-project/ retry=0
ProxyPreserveHost On
ProxyErrorOverride Off
I normally use nginx for this sort of thing, so I’m not sure if that will work or not.
Update: the above didn’t work so trying something else.
Try something like this and see if that helps. It is setup a little different. It proxies everything except media which is served via an alias. This remove the need to have /my-project/ at all.
<VirtualHost *:80>
ServerName example.com
UseCanonicalName On
ServerAdmin webmaster@localhost
LogLevel warn
CustomLog /var/log/apache2/example.com/access.log combined
ErrorLog /var/log/apache2/example.com/error.log
ServerSignature On
Alias /media/ /home/example/example.com/pysrc/project/media/
ProxyPass /media/ !
ProxyPass / http://127.0.0.1:18731/
ProxyPassReverse / http://127.0.0.1:18731/
ProxyPreserveHost On
ProxyErrorOverride Off
</VirtualHost>
- Django: vps or shared hosting?
- GAE and Django: What are the benefits?
- Wrong url with Django Sorl thumbnail with Amazon s3
0👍
I have solved the original problem by setting the ProxyPassReverse config to the actual domain name:
ProxyPass /my-project/ http://127.0.0.1:18731/
ProxyPassReverse /my-project/ http://mydomain.com/
- Django import-export: only export
- Django error cannot import name 'RemovedInDjango30Warning'
- Using Django's collectstatic with boto S3 throws "Error 32: Broken Pipe" after a while
- Is it possible to use a natural key for a GenericForeignKey in Django?
- Django JSON De-serialization Security