Я пытаюсь разместить веб-сайт django в службе Azure kubernetes, кроме nginx-ingress, и я хотел бы, чтобы мое веб-шоу django проходило по пути.
например, при доступе к сайту администратора по умолчанию, я хотел быПолучите доступ к нему на http://example.com/django/admin
вместо http://example.com/admin
. Я попытался настроить ниже, когда я получаю доступ к http://example.com/django/admin
, он перенаправит меня на http://example.com/admin
и покажет мне ошибку 404 из входного бэкенда по умолчанию, как я установилотладка django для ture Я предполагаю, что этот средний вход не отправил мой запрос в мою службу django
# path example
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: django-ingress
labels:
app: django
namespace: default
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/ssl-redirect: "false"
nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
rules:
- http:
paths:
- backend:
serviceName: django-service
servicePort: 80
path: /django(/|$)(.*)
, поэтому я пытаюсь curl -I -k http://example.com/django/admin
, и он показывает что-то вроде ниже
HTTP/1.1 301 Moved Permanently
Server: openresty/1.15.8.2
Date: Wed, 06 Nov 2019 04:14:14 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 0
Connection: keep-alive
Location: /admin/
То же самое происходит с любой действительной страницей на сайте, если я curl -I -k http://example.com/django/any_valid_page
отображает ее ниже:
HTTP/1.1 301 Moved Permanently
Server: openresty/1.15.8.2
Date: Wed, 06 Nov 2019 04:14:14 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 0
Connection: keep-alive
Location: /any_valid_page/
Интересно, это вызвано тем, что я делаю тест с веб-сервером разработки django по умолчанию? (т.е. python manage.py runserver
)
Если я попытаюсь разместить его в корне, как показано ниже, все в порядке ...
# root example
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: django-ingress
labels:
app: django
namespace: default
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
rules:
- http:
paths:
- backend:
serviceName: django-service
servicePort: 80
path: /