How do I set subdirectory in nginx with Django

后端 未结 2 888
醉话见心
醉话见心 2021-01-15 00:10

Environment:

  • uwsgi
  • nginx
  • django 1.3

I\'m using the domain www.example.com with Django and nginx, and I want to ac

相关标签:
2条回答
  • 2021-01-15 00:12

    According to the uWSGI on Nginx docs, you just have to pass the SCRIPT_NAME to django.

    location /abc {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:9000;
        uwsgi_param SCRIPT_NAME /abc;            
    }
    

    Django will still "see" /abc, but it should deal with it so that it gets stripped off before your urls are matched. You want this to happen, if django didn't see /abc, it would generate incorrect urls for your site and none of your links would work.

    0 讨论(0)
  • 2021-01-15 00:35

    Now that uwsgi_modifier1 30 is removed in the latest versions of Nginx and uWSGI, I had to use a newer method to get it working:

    uWSGI config:

    [uwsgi]
    route-run = fixpathinfo:
    

    Nginx config:

    location /abc {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:9000;
        uwsgi_param SCRIPT_NAME /abc; # Pass the URL prefix to uWSGI so the "fixpathinfo:" route-rule can strip it out
    }
    

    IF THAT DOESN'T FIX IT: Try installing libpcre and libpcre-dev, then reinstall uwsgi with pip install -I --no-cache-dir uwsgi. uWSGI's internal routing subsystem requires the PCRE library to be installed before uWSGI is compiled/installed. More information on uWSGI and PCRE.

    0 讨论(0)
提交回复
热议问题