#nginx #kubernetes
#nginx #kubernetes
Вопрос:
У меня есть образ docker с Nginx, обслуживающий статический сайт. Сайт обслуживается из папки, назовем ее «папка». Когда я запрашиваю http://mydomain/folder / это работает. Однако, когда я запрашиваю http://mydomain/folder он перенаправляет на http://mydomain:8080/folder который является внутренним портом, используемым контейнером. Как я могу запретить моему входному контроллеру добавлять порт?
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
generation: 1
labels:
app.kubernetes.io/instance: administration-env
name: administration-env-erst-env
namespace: default
resourceVersion: "71710149"
selfLink: /apis/extensions/v1beta1/namespaces/default/ingresses/administration-env-erst-env
uid: c89014d2-60fe-11e9-8a63-000d3a2cc488
spec:
rules:
- host: mydomain
http:
paths:
- backend:
serviceName: administration
servicePort: 8080
path: /administration
tls:
- hosts:
- mydomain
secretName: some-tls-secret
status:
loadBalancer:
ingress:
- ip: xx.xx.xx.xx
Ответ №1:
вы можете попробовать в качестве обходного пути добавить прокси-сервер в свой nginx.conf
что-то вроде:
location /folder {
proxy_pass http://mydomain/folder/;
}
Ответ №2:
если вы используете nginx ingress, вы можете сделать это следующим образом
nginx.ingress.kubernetes.io/configuration-snippet
для фрагмента блока расположения nginx
nginx.ingress.kubernetes.io/server-snippet
для фрагмента кода в сервисном блоке конфигурации nginx
server-snippets: |
location /foldername {
proxy_pass http://yourdomain/folder/;
proxy_set_header Upgrade $http_upgrade;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_set_header Connection "upgrade";
proxy_cache_bypass $http_upgrade;
}