2017-11-03 4 views
0

나는 모든 http 요청을 haproxy를 사용하는 https 요청으로 리디렉션하려는 상황이 있습니다. 예를 들어, haproxy가 설치된 서버 x와 실제 서비스가 실행중인 서버 y가 있습니다 (ssl 사용). 이제는 haproxy가 http 요청을 받아 들여 https를 통해 백엔드 서버로 전달하려고합니다. 일종의 같은 :haproxy를 사용하여 https 요청에 대한 HTTP 요청

사용자 < - (HTTP) -> haproxy < - (HTTPS) -> 실제 서비스

는 지금까지 IS 무엇을했는지, 프론트 엔드는 8080 포트에서 HTTP 연결을 허용 그것은 백엔드에서 기본 백엔드로 보냅니다. "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); 

POST :

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 

POST와 HAPROYY

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