首页 > 解决方案 > Django + nginx,只有主页有效

问题描述

我不明白这种行为来自在 gunicorn 上运行的 django 以及来自 nginx 的静态文件托管和端口转发。

项目目录树:

.
├── myproj
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── pages
│   ├── __init__.py  
│   ├── apps.py
│   ├── static
│   │   └── pages
│   │       └── index.css
│   ├── templates
│   │   └── pages
│   │       └── index.html
│   ├── urls.py
│   └── views.py

页面/urls.py:

urlpatterns = [
    path('', views.index, name='home'),
    path('static-home/', views.index, name='static-home'),
    ]

myproj/urls.py:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('pages/', include('pages.urls')),
    path('', include('pages.urls')),
]

如果我python manage.py runserver在这些 URI 上一切正常

http://127.0.0.1:8000/ 
http://127.0.0.1:8000/static-home/ 
http://127.0.0.1:8000/pages/ 
http://127.0.0.1:8000/pages/static-home/ 

如果我使用 gunicorn + nginx 进行 dockerize(如本博文所述:https ://blog.skindc.co.uk/dockerise-django-and-static-files-with-nginx/ )

然后我看到了不同的行为

good:      http://<docker-machine-ip>/
nginx 404: http://<docker-machine-ip>/static-home/
good:      http://<docker-machine-ip>/pages/
good:      http://<docker-machine-ip>/pages/static-home/

如果需要,我将添加任何其他信息,但为了保持帖子简洁,我的所​​有 docker 文件、docker compose、nginx.conf 等与上面链接的教程中显示的相同。

为什么我可以添加来自页面的所有网址<docker-machine-ip>/pages/,但我只能从页面添加主页,而不能添加<docker-machine-ip>/其他页面?

标签: pythondjangodockernginxdocker-compose

解决方案


推荐阅读