2017-03-16 9 views
0

내 서버에서 SSL/https를 처리 중입니다.iptables 및 구문 분석 서버 (구문 분석 서버)를 사용하여 HTTP를 HTTP로 리디렉션하는 방법

$ sudo iptables -t natL -n --line-number 
1 REDIRECT tcp -- 0.0.0.0/0   0.0.0.0/0   tcp dpt:443 redir ports 9080 
2 REDIRECT tcp -- 0.0.0.0/0   0.0.0.0/0   tcp dpt:80 redir ports 4000 

이 어떻게 구문 분석 서버가 ​​HTTPS를 사용하도록 HTTP 오는 모든 트래픽을 리디렉션을 알 수 있습니다 :

나는 두 개의 포트 (4000) HTTP에 대한 다른 하나 HTTPS (9080)를 사용하여 iptables에 대한 구성?

내가 이전에 expressJS를 사용하여 유사한 구성을했지만 그것을 구문 분석 서버와 함께 작동하지 않습니다, 이것은 내가 이전에 사용 된 코드입니다 : 여기

app.use(function (req, res, next) { 
    return res.redirect(['https://domainName.tv', req.url].join('')); 
}); 

내 응용하는 index.js입니다

var express = require('express'); 
var ParseServer = require('parse-server').ParseServer; 
var path = require('path'); 
var bodyParser = require('body-parser'); 
var SimpleSendGridAdapter = require('parse-server-sendgrid-adapter'); 
var stripe = require("stripe"); 
var https = require('https'); 
var http = require('http'); 
var fs = require('fs'); 


var databaseUri = 'mongodb://localhost:27017/dev'; 

if (!databaseUri) { 
    console.log('DATABASE_URI not specified, falling back to localhost.'); 
} 

var options = { 
    key: fs.readFileSync(__dirname + '/ssl/domainName.key'), 
    cert: fs.readFileSync(__dirname + '/ssl/domainName.crt') 
}; 

var api = new ParseServer({ 
    databaseURI: databaseUri || 'mongodb://localhost:27017/dev', 
    cloud: __dirname + '/cloud/main.js', 
    appId: 'xN6xxxxxxxxxxxxxxxxmx', 
    masterKey: 'egxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdn', 
    javascriptKey: 'O2xxxxxxxxxxxxxxxxxxxxxxxxxYy', //Add your master key here. Keep it secret! 
    serverURL: 'https://localhost:9080/parse', 
    restAPIKey: 'lxxxxxxxxxxxxxxxN', 
    appName: 'domainName.TV', 
    publicServerURL: 'https://domainName.tv/parse', 
    emailAdapter: SimpleSendGridAdapter({ 
     apiKey: 'SG.SbxxxxxxxxxxxxxxxxxxxxxxxxxxxxMxc', 
     fromAddress: '[email protected]', 
    }), 
    liveQuery: { 
     classNames: ["UsPrIn", "Event"] // List of classes to support for query subscriptions 
    } 
}); 

var app = express(); 

// redirect all http requests to https 
// THIS IS NOT WORKING!!!! 
app.use(function (req, res, next) { 
    return res.redirect(['https://domainName.tv', req.url].join('')); 
}); 

// Serve static assets from the /public folder 
app.use('/public', express.static(path.join(__dirname, '/public'))); 

// Serve the Parse API on the /parse URL prefix 
var mountPath = process.env.PARSE_MOUNT || '/parse'; 
app.use(mountPath, api); 

app.get('/*', function(req, res) { 
    res.sendFile(path.join(__dirname, '/public/index.html')); 
}); 

var port = process.env.PORT || 9080; 

var httpsServer = https.createServer(options, app).listen(port, function() { 
    console.log('parse-server running on SSL port ' + port + '.'); 
}); 

var httpServer = http.createServer(app).listen(4000, function() { 
    console.log('parse-server running on port 4000.'); 
}); 

// This will enable the Live Query real-time server 
ParseServer.createLiveQueryServer(httpsServer); 

내 솔루션은이 중 하나와 비슷하지만 구문 분석 서버를 사용하고 있습니다. Automatic HTTPS connection/redirect with node.js/express

답변

0

누군가가 불편한 경우를 대비하여 답을 찾았습니다 : req.s

app.use(function (req, res, next) { 
    if(!req.secure && (req.headers.host !== 'localhost:7777')) { 
     return res.redirect(['https://mydomain.tv', req.url].join('')); 
    } 
    next(); 
}); 
:

이 A. 안전한 데이

코드입니다