идеи закончились
есть внешний домен, не относящийся к куберу
например: external.domain.com
и внешний домен, на котором крутится приложение: app.domain.com
дело в том, что при проксировании с external.domain.com на app.domain.com получаю 404
есть такой нжинкс конфиг на внешней проксе:
server {
listen 80;
server_name external.domain.com;
proxy_ssl_verify off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-M-D 2;
proxy_set_header X-M-D-Proto $http_x_forwarded_proto;
proxy_read_timeout 30;
proxy_cookie_domain t.domain.com $host;
location ~ ^/folder/click/?$ { proxy_pass https://app.domain.com/folder/click$is_args$args; resolver 8.8.8.8 8.8.4.4; }
location / {
proxy_intercept_errors on;
error_page 500 501 502 503 504 505 506 507 508 509 510 511 = @errors;
proxy_pass https://t.domain.com/;
}
}
при использовании такой урлы получаю 404:
https://external.domain.com/folder/click?cnv_id=1234567890123456789012345678901234567890&dph=1
ожидаю получить проксирование на app.domain.com и увидеть Success строку
хрень в том, что если напрямую запросить эту урлу на домене сервиса - работает
множество доменов которые работают с этим сервисом, который находится не в кубере(поднято два прода, один вне кубера, один в кубере) - работает
у меня стойкое ощущение что я что-то не учел в nginx ingress controller-е
его configmap такой на данный момент:
configmap:
data:
worker-processes: auto
max-worker-connections: "4096"
server-tokens: "false"
disable-access-log: "false"
use-gzip: "false"
hsts: "false"
# Work around for HTTP->HTTPS redirect not working when using the PROXY protocol:
# https://github.com/kubernetes/ingress-nginx/issues/2724
# It works by getting Nginx to listen on port 8080 on top of the standard 80 and 443,
# and making any requests sent to port 8080 be reponded do by this code, rather than
# the normal port 80 handling.
ssl-redirect: "false"
http-snippet: |
map true $pass_access_scheme {
default "https";
}
map true $pass_port {
default 443;
}
server {
listen 8080 proxy_protocol;
return 308 https://$host$request_uri;
}
use-forwarded-headers: "true"
compute-full-forwarded-for: "true"
enable-underscores-in-headers: "true"
use-proxy-protocol: "true"
TL;DR
Могу предположить, что из-за директивы proxy_set_header host $host В ингресс приходи запрос на домен external.domain.com, который не слушается ингрессом. Попробуй в локейшин с проксипасом добавить proxy_set_header host app.domain.com
Обсуждают сегодня