http-запрос к https-запросу с использованием haproxy

У меня есть ситуация, когда я хочу перенаправить все запросы http на запрос https с помощью haproxy. Допустим, у меня есть сервер x, на котором установлен haproxy, и сервер y, на котором запущены реальные службы (используя ssl). Теперь я хочу, чтобы haproxy принимал http-запросы и отправлял их на внутренний сервер через https. Вроде как:

пользователь <- (http) -> haproxy <- (https) -> фактический сервис

Что я сделал до сих пор, так это то, что веб-интерфейс принимает http-соединение через порт 8080 и отправляет его по умолчанию в бэкэнд, а в бэкэнде я добавил "ssl verify none".

Используя это, я мог загрузить страницу с http, но всякий раз, когда я отправляю запрос (скажем, логин), ответ приходит в http url и ничего не работает.

Я вообще не знаю, возможно ли это.

Дайте мне знать, если мне нужно предоставить более подробную информацию по этому вопросу.

Любой свет на это будет очень любезен.

Заранее спасибо.

1 ответ

Решение

Какой у тебя конфиг?

Вам может понадобиться указать такой порт

server httpsserver 10.0.0.80:443 ssl verify none

Простой https сервер:

var express = require('express');
var https = require('https');
var fs = require('fs');
var bodyParser = require('body-parser');
var options = {
  key: fs.readFileSync('./client-key.pem'),
  cert: fs.readFileSync('./client-cert.pem')
};
var app = express();
app.use(bodyParser.json());
app.post('/post', function (req, res) {
  res.send(req.body);
});
https.createServer(options, app).listen(443);

СООБЩЕНИЕ:

curl -k -X POST https://127.0.0.1/post -d '{"a":"b"}' -H "Content-Type: application/json"                                                               
{"a":"b"}

Конфигурация HAProxy:

global
    debug
defaults
    retries 3
    timeout client  300s
    timeout connect 300s
    timeout server  300s
frontend web
    bind *:8080
    default_backend app
backend app
    balance     roundrobin
    server httpsserver 127.0.0.1:443 ssl verify none

ПОСТ против HAProxy

curl -k -X POST http://127.0.0.1:8080/post -d '{"a":"b"}' -H "Content-Type: application/json"                                                                 
{"a":"b"}
Другие вопросы по тегам