how to deploy django under a suburl behind nginx

后端 未结 3 556
别那么骄傲
别那么骄傲 2020-12-08 15:16

I have a django application running on http://localhost:12345 . I\'d like user to access it via url http://my.server.com/myapp . I use nginx to reverse proxy to it like the

3条回答
  •  再見小時候
    2020-12-08 15:36

    As the prefix is set in Nginx, the web server that hosts the Django app has no way of knowing the URL prefix. As orzel said, if you used apache+mod_wsgi of even nginx+gunicorn/uwsgi (with some additional configuration), you could use the WSGIScriptAlias value, that is automatically read by Django.

    When I need to use a URL prefix, I generally put it myself in my root urls.py, where I have only one line, prefixed by the prefix and including an other urls.py

    (r'^/myapp/', include('myapp.urls')),
    

    But I guess this has the same bottleneck than setting a prefix in settings.py, you have redundant configuration in nginx and Django.

    You need to do something in the server that hosts your Django app at :12345. You could set the prefix there, and pass it to Django using the WSGIScriptAlias or its equivalent outside mod_wsgi. I cannot give more information as I don't know how your Django application is run. Also, maybe you should consider running your Django app directly from Django, using uWSGI or gunicorn.

    To pass the prefix to Django from the webserver, you can use this :

    proxy_set_header SCRIPT_NAME /myapp;
    

    More information here

提交回复
热议问题