как через nginx сервер проксировать на nginx ingress controller
есть два сервера
- внешний сервер на нем nginx сервер
- внутренний к нему доступ только через внешний сервер а так же на нем установлен k8s c nginx ingress controller
проблема заключается в том что не могу заставить работать проксирование с k8srancher.ru на rancher.k8smaster.ru если proxy_set_header Host $host; есть в конфиге внешнего nginx то при переходе на сайт ошибка 404 Not Found если же убрать то сайт открывается но работает некорректно (даже авторизоваться не могу)
подскажите куда и что добавить что бы заработало правильно проксирование
Код внешний сервер nginx сервер /etc/nginx/conf.d/rancher.conf
map $http_upgrade $connection_upgrade {
default Upgrade;
'' close;
}
server {
listen 80;
server_name k8srancher.ru;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name k8srancher.ru;
ssl_prefer_server_ciphers on;
ssl_session_timeout 1d;
ssl_verify_client off;
ssl_session_cache builtin:1100 shared:SSL:10m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers EECDH:+AES256:-3DES:RSA+AES:RSA+3DES:!NULL:!RC4;
ssl_certificate /etc/nginx/ssl/k8soshift.ru.pem;
ssl_certificate_key /etc/nginx/ssl/k8soshift.ru.key;
location / {
# proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://rancher.k8smaster.ru/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
файл конфигурации ingress controller на внутреннем сервере (kubectl edit cm -n ingress-nginx ingress-nginx-controller)
apiVersion: v1
data:
allow-snippet-annotations: "true"
use-forwarded-headers: "true"
kind: ConfigMap
metadata:
annotations:
meta.helm.sh/release-name: ingress-nginx
meta.helm.sh/release-namespace: ingress-nginx
creationTimestamp: "2022-05-01T12:17:11Z"
labels:
app.kubernetes.io/component: controller
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
app.kubernetes.io/version: 1.2.0
helm.sh/chart: ingress-nginx-4.1.0
name: ingress-nginx-controller
namespace: ingress-nginx
resourceVersion: "31126"
uid: 0db55f76-6e6d-45a8-8996-abc7478ebc28
файл ingress rancher.k8smaster.ru (kubectl edit ingress rancher -n cattle-system)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
cert-manager.io/issuer: rancher
cert-manager.io/issuer-kind: Issuer
field.cattle.io/publicEndpoints: '[{"addresses":["10.209.40.2"],"port":443,"protocol":"HTTPS","serviceName":"cattle-system:rancher","ingressName":"cattle-system:rancher","hostname":"rancher.k8smaster.ru","allNodes":false}]'
kubernetes.io/ingress.class: nginx
meta.helm.sh/release-name: rancher
meta.helm.sh/release-namespace: cattle-system
nginx.ingress.kubernetes.io/configuration-snippet: |
more_set_headers "Host k8srancher.ru";
more_set_headers "X-Forwarded-Proto $scheme";
more_set_headers "X-Forwarded-Port $server_port";
more_set_headers "X-Forwarded-For $proxy_add_x_forwarded_for";
more_set_headers "X-Real-IP $remote_addr";
nginx.ingress.kubernetes.io/proxy-connect-timeout: "30"
nginx.ingress.kubernetes.io/proxy-read-timeout: "1800"
nginx.ingress.kubernetes.io/proxy-send-timeout: "1800"
creationTimestamp: "2022-05-01T12:32:56Z"
generation: 1
labels:
app: rancher
app.kubernetes.io/managed-by: Helm
chart: rancher-2.6.4
heritage: Helm
release: rancher
name: rancher
namespace: cattle-system
resourceVersion: "71869"
uid: 89245b12-68f9-4e7b-a074-527505b84c73
spec:
ingressClassName: nginx
rules:
- host: rancher.k8smaster.ru
http:
paths:
- backend:
service:
name: rancher
port:
number: 80
pathType: ImplementationSpecific
tls:
- hosts:
- rancher.k8smaster.ru
secretName: tls-rancher-ingress
status:
loadBalancer:
ingress:
- ip: 10.209.40.2