我正在尝试使用 Nginx 通过 UWSGI 设置 Django。
我使用这个函数让 UWSGI 通行证工作
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:9001;
}
不幸的是,当我访问 /django/admin 时,我收到一个错误
页面未找到(404)请求方法:GET请求URL: http://69.xxx/django/admin 使用 Django.urls 中定义的 URLconf,Django 按以下顺序尝试了这些 URL 模式:^admin/
我怎样才能让 nginx 重写 url 以不传递 /django 部分?
答案1
文件中必须包含以下内容uwsgi_params
:
uwsgi_param QUERY_STRING $query_string;
uwsgi_param REQUEST_METHOD $request_method;
uwsgi_param CONTENT_TYPE $content_type;
uwsgi_param CONTENT_LENGTH $content_length;
uwsgi_param REQUEST_URI $request_uri;
uwsgi_param PATH_INFO $document_uri;
uwsgi_param DOCUMENT_ROOT $document_root;
uwsgi_param SERVER_PROTOCOL $server_protocol;
uwsgi_param REMOTE_ADDR $remote_addr;
uwsgi_param REMOTE_PORT $remote_port;
uwsgi_param SERVER_PORT $server_port;
uwsgi_param SERVER_NAME $server_name;
这些是传递给应用程序的参数。我认为您需要将其更改request_uri
为 $host,以便删除主机名后面的所有内容。
您也可以在虚拟服务器配置中设置此变量,它应该会在本地覆盖它。请在之前执行此操作uwsgi_pass 127.0.0.1:9001;
。
替代方法您还可以创建如下重写规则:
rewrite ^(.*)/(.*)$ $1 last;
并将其添加到location /
部分中,但我不确定这是否会按预期工作。