Я пытаюсь прокси-протокол защищенного http на kong от nginx, но я получаю сообщение об ошибке http-запроса на HTTP-порт? - PullRequest
0 голосов
/ 21 октября 2019

Используя эту конфигурацию:

upstream kong {
  server 127.0.0.1:8000;
}

upstream kong_secure {
  server 127.0.0.1:8443;
}

server {
    listen 80;
    server_name api.example.co.za;
    error_log /var/log/nginx/api.error.log;
    access_log /var/log/nginx/api.access.log;

    location / {
        proxy_pass http://kong;
        proxy_set_header Host $host;
    }
}


server {
    server_name api.example.co.za;
    error_log /var/log/nginx/api.error.log;
    access_log /var/log/nginx/api.access.log;


    location / {
        proxy_pass http://kong_secure;
        proxy_set_header Host $host;
    }
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/api.example.co.za/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/api.example.co.za/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

Я получаю:

400 Bad Request
The plain HTTP request was sent to HTTPS port

1 Ответ

0 голосов
/ 21 октября 2019

Kong также запускает nginx, поэтому ошибка действительно исходит от kong. Я проверил это, проверив журналы доступа. Nginx vanilla выполнял ssl-завершение, а затем передавал прокси к восходящему ssl, прослушивающему ssl.

Однако теперь это просто http, но при переходе на порт https в Конге.

Итак, чтобы исправить этот наборupsteam к порту не https и удалить kong_secure это не нужно:

upstream kong {
  server 127.0.0.1:8000;
}

Но теперь Конг будет жаловаться с помощью:

{"message":"Please use HTTPS protocol"}

Чтобы исправить это, вам нужно прочитатьдокументы по Ограничение клиентского протокола , что в конечном итоге приведет к установке заголовка X-Forwarded-Proto: https и добавлению ip porxy в trusted_ips в конфигурации kong.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...