Nginx+;uwsgi&x2B;Django:重写url时出错
我正试图在我的研究所网站的子路径下部署一个Django项目 假设服务器IP为:Nginx+;uwsgi&x2B;Django:重写url时出错,django,url,nginx,uwsgi,Django,Url,Nginx,Uwsgi,我正试图在我的研究所网站的子路径下部署一个Django项目 假设服务器IP为:X1.X2.X3.X4 而xyz.edu/tnp可能指向X1.X2.X3.X4/portal/ Django项目的结构如下: . |-- project | |-- app1 | |-- app2 | |-- project_nginx.conf | |-- project_uwsgi.ini | |-- db.sqlite3 | |-- manage.py | |-- media |
X1.X2.X3.X4
而
xyz.edu/tnp
可能指向X1.X2.X3.X4/portal/
Django项目的结构如下:
.
|-- project
| |-- app1
| |-- app2
| |-- project_nginx.conf
| |-- project_uwsgi.ini
| |-- db.sqlite3
| |-- manage.py
| |-- media
| |-- README.md
| |-- static
| `-- uwsgi_params
|-- README.md
|-- requirements
| |-- base.txt
| |-- dev.txt
| |-- prod.txt
| `-- test.txt
|-- requirements.txt
|-- static_cdn
| |-- admin
| .....
url(r'^app1/', include('app1.urls')),
url(r'^app2/', include('app2.urls')),
url(r'^admin/', include(admin.site.urls)),
project/URL.py中我的URL方案如下所示:
.
|-- project
| |-- app1
| |-- app2
| |-- project_nginx.conf
| |-- project_uwsgi.ini
| |-- db.sqlite3
| |-- manage.py
| |-- media
| |-- README.md
| |-- static
| `-- uwsgi_params
|-- README.md
|-- requirements
| |-- base.txt
| |-- dev.txt
| |-- prod.txt
| `-- test.txt
|-- requirements.txt
|-- static_cdn
| |-- admin
| .....
url(r'^app1/', include('app1.urls')),
url(r'^app2/', include('app2.urls')),
url(r'^admin/', include(admin.site.urls)),
在我的本地服务器上,以下方案运行良好。*127.0.0.1:8000/app1/
*127.0.0.1:8000/app1/login/
*127.0.0.1:8000/app1/homepage/
*127.0.0.1:8000/app2/somepage
*127.0.0.1:8000/管理员/ 我想在部署服务器上映射我的URL,以便
xyz.edu/tnp/app1
链接到X1.X2.X3.X4/portal/app1
和xyz.edu/tnp/app2
链接到X1.X2.X3.X4/portal/app2
xyz.edu/tnp/admin
链接到X1.X2.X3.X4/portal/admin
等等 问题是
X1.X2.X3.X4/portal/
中的后缀portal
。当我在浏览器中键入xyz.edu/tnp/app1时,收到的错误是
Django使用portal.URL中定义的URLconf,按以下顺序尝试了这些URL模式:
^app1/^app2/
^媒体/(?P.)$
^静态/(P.)美元 当前URL portal/app1/与其中任何一个都不匹配 现在我想到两种方法:
xyz.edu/portal/login
,而不是xyz.edu/tnp/app1/login
第二种方法,如前所述,似乎很有希望,但对我来说不起作用。也许我做错了什么。以下是我的project_nginx.conf和project_uwsgi.ini文件
项目\u uwsgi.ini
[uwsgi]
chdir = ...
# Django's wsgi file
module = project.wsgi
# the virtualenv (full path)
home = ...
# master
master = true
# maximum number of worker processes
processes = 10
# the socket (use the full path to be safe
socket = ...
# clear environment on exit
vacuum = true
project\u nginx.conf
upstream django {
server unix://.../.../project.sock; # for a file socket
# server 127.0.0.1:8001;
}
# configuration of the server
server {
listen 80;
server_name xyz.edu; # substitute your machine's IP address or FQDN
client_max_body_size 75M; # adjust to taste
# Django media
location /media {
alias /usr/share/nginx/.../project/media;
}
location /static {
alias /usr/share/nginx/.../project/static;
}
# Finally, send all non-media requests to the Django server.
location /portal/ {
rewrite /portal/(.*) /$1 break;
uwsgi_pass django;
# # the uwsgi_params file you installed
include /usr/.../wsgi_param
# uwsgi_param SCRIPT_NAME /portal/;
# uwsgi_modifier1 30;
}
}