Прокси-сервер nginx за входным проходом nginx на порт vhost не работает

У нас была схема

 ELB => (Nginx proxy => Nodejs)containers

теперь мы хотим использовать kubernetes и nginx ingress

 ELB => Nginx Ingress (Load Balancer) => (Nginx proxy => Nodejs)pod

часть конфигурации nginx proxy vhost:

include /etc/nginx/redirect-map-domainb.conf;
include /etc/nginx/redirect-map-domaina.conf;
 server {
     listen 80;
     listen [::]:80;
     server_name domainb www.domainb;
     if ( $redirect_domainb ) {
         return 301 https://domaina$redirect_uri_domainb;
     }
     location / {
         return 301 https://domaina/en/company; } }

 server {
     listen 80;
     listen [::]:80;
     server_name domaina www.domaina;
     if ( $redirect_uri_domaina ) {
         return 301 https://domaina$redirect_uri_domaina;
     }
     location / {
         return 301 https://domaina/de/mobile; } }

 server {
     listen 1443;
     listen [::]:1443;
     server_name _;
     location /health_check {
         proxy_pass http://localhost:8000/ping;
         access_log off; }   }

 server {
     listen 443;
     listen [::]:443;
     server_name domaina www.domaina;
     if ( $redirect_uri_domaina) {
        return 301 https://domaina$redirect_uri_domaina;
     }
     root /app/dist;
       index index.html index.htm index.nginx-debian.html;
       access_log  /var/log/access.log logstash;
       error_log   /var/log/error.log;

     location / {
       proxy_pass http://localhost:8000;
       proxy_http_version 1.1;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection 'upgrade';
       proxy_set_header Host $host;
       proxy_cache_bypass $http_upgrade;
     }

сервисный ямл:

 apiVersion: v1
    kind: Service
    metadata:
      name: web
      annotations: {}
      labels:
        app: web
    spec:
      ports:
      - name: http
        port: 80
        targetPort: 80
      - name: https
        port: 443
        targetPort: 443
      selector:
        app: web
      type: ClusterIP

часть развертывания yaml:

ports:
    - name: nginxhttp
      containerPort: http
    - name: nginxhttps
      containerPort: https

часть входного контроллера yaml:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
    annotations:
      nginx.ingress.kubernetes.io/rewrite-target: /

    name: dev-ingress
    namespace: default
spec:
  rules:
  - host: domaina
    http:
      paths:
      - backend:
          serviceName: web
          servicePort: 443
  - host: domainb
    http:
      paths:
      - backend:
          serviceName: web
          servicePort: 80

мы установили nginx ingress с управляющей частью файла значений

service:
    annotations:
       service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
       service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "3600"
       service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: '*'
       service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:eu-west-1:565638931841:certificate/2222...
       service.beta.kubernetes.io/aws-load-balancer-ssl-ports: https


  targetPorts:
      http: http
      https: https

  type: LoadBalancer

мы получили ошибку простой HTTP-запрос был отправлен на порт HTTPS, как перенаправить на порт vhost прокси-сервера nginx из входа? сделать рабочую переадресацию с http://domaina на https://domain.


person marc345    schedule 26.09.2018    source источник
comment
Пробовали ли вы эту статью medium.com/store2be-tech/ , что было дано в этой теме? stackoverflow.com/questions/51882079/   -  person Vit    schedule 27.09.2018
comment
Спасибо за ответ, проблема в том, что если я использую аннотацию ingress.kubernetes.io/force-ssl-redirect, я получу 2 перенаправления 307, а затем 301 перенаправление, что не очень хорошо для нашего SEO,   -  person marc345    schedule 27.09.2018