我不理解这种行为来自在带有静态文件托管和nginx端口转发功能的gunicorn上运行的django。
项目目录树:
.
├── 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
pages / 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/
的页面添加所有URL,但是我只能从<docker-machine-ip>/
的页面添加主页呢?