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"}