环境:
我将网域www.example.com
与Django和nginx结合使用,并且想通过www.example.com/abc/
访问Django,但我不知道如何设置子目录 。
这是nginx conf文件:
server {
listen 80;
server_name www.example.com;
error_log /var/log/nginx/xxx.error_log info;
root /home/web/abc; # this is the directory of the django program
location ~* ^.+\.(jpg|jpeg|png|gif|css|js|ico){
root /home/web/abc;
access_log off;
expires 1h;
}
location ~ /abc/ { # I want to bind the django program to the domian's subdirectory
include uwsgi_params;
uwsgi_pass 127.0.0.1:9000;
}
}
当我打开网站www.example.com/abc/
,django urls.py
不匹配,它仅匹配^index$
类的网站。
如何修改nginx位置以将django设置为www.example.com/abc
?
现在,在最新版本的Nginx和uWSGI中删除了uwsgi_modifier1 30
,我不得不使用一种较新的方法来使其工作:
uWSGI配置:
[uwsgi]
route-run = fixpathinfo:
Nginx的配置 :
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
}
如果不能解决问题:尝试安装libpcre和libpcre-dev,然后使用pip install -I --no-cache-dir uwsgi
uwsgi重新安装uwsgi。 uWSGI的内部路由子系统要求在编译/安装uWSGI 之前先安装PCRE库。 有关uWSGI和PCRE的更多信息。