Nginx 删除基本 URL

Nginx 删除基本 URL

我正在尝试使用 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 /部分中,但我不确定这是否会按预期工作。

相关内容