相关疑难解决方法(0)

nginx通过uWSGI在一个子目录中提供Django

我已经经历了一些以前的线程: 如何在nginx中使用Django设置子目录如何在nginx 后面的子区域下部署django在 子目录nginx + uwsgi上服务烧瓶app

基本的教训是,您只需要配置您的站点(可用)即可实现此目的.我现在尝试了各种各样的排列

server {
    listen 80;
    server_name www.example.com;

    location = /favicon.ico { 
        access_log off; 
        log_not_found off; 
    }

    location /static/ {
        root /path/to/project;
    }

    location /project/ {
        root            /path/to/project;
        include         /etc/nginx/uwsgi_params;
        uwsgi_param     SCRIPT_NAME /project;
        uwsgi_modifier1 30;
        uwsgi_param PATH_INFO "$1";
        uwsgi_pass      unix:/tmp/project.sock;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我将location定义为"/"时,一切都运行得很好(并删除SCRIPT_NAME,modifier1,PATH_INFO和root并不重要.但是尝试使用子目录总是会导致找不到页面(404):

Request URL:    http://www.example.com/project/project
Run Code Online (Sandbox Code Playgroud)

(编辑)它正在为请求添加目录.我怎么不搞清楚?

(尝试过forced_script_name - 不应该使用它并给出其他类型的头痛 - 和uwsgi配置设置)

编辑:

location /project/ {
    root            /path/to/project;
    include         /etc/nginx/uwsgi_params;
    uwsgi_param     SCRIPT_NAME /project;
    uwsgi_pass      unix:/tmp/project.sock;
}
Run Code Online (Sandbox Code Playgroud)

不工作......套接字在那里,当我配置/时工作 - 我只是看不到我错过的东西.

更新:

location ~ /project(?<path_info>/.*|$) { …
Run Code Online (Sandbox Code Playgroud)

django nginx subdirectory uwsgi

11
推荐指数
2
解决办法
4405
查看次数

Django在子目录 - 管理站点不起作用

我已将Django项目部署在服务器上的子目录中(dns_name_of_my_page/notes).我可以通过dns_name_of_my_page/notes/app /访问此项目中的应用.不幸的是,如果整个Django项目位于托管服务器上的public_html中的子目录'notes'中,则admin站点无效.当我进入管理站点(dns_name_of_my_page/notes/admin /)时,重定向到URL而没有子目录的名称(dns_name_of_my_page/adminlogin /?next = // admin /),这是不可接受的.它应该是dns_name_of_my_page/notes/adminlogin /?next =/notes/admin /

这是我在项目中的URL配置:

urlpatterns = [
    url(r'^/?app/?', include('app.urls')),
    url(r'^/?$', views.index, name='index'),
    url(r'^/?admin/?', admin.site.urls),
]
Run Code Online (Sandbox Code Playgroud)

以下是我的应用中的网址配置:

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^(?P<num>[0-9]+)/?', views.num, name='num'),
]
Run Code Online (Sandbox Code Playgroud)

我试过设置

FORCE_SCRIPT_NAME = '/notes/'
Run Code Online (Sandbox Code Playgroud)

要么

SUB_SITE = "/notes/"
Run Code Online (Sandbox Code Playgroud)

在settings.py但它没有帮助我.

你有没有在子目录中运行Django应用程序的这种问题?

python django

5
推荐指数
1
解决办法
776
查看次数

标签 统计

django ×2

nginx ×1

python ×1

subdirectory ×1

uwsgi ×1