Ответ 1
Я не совсем понимаю смысл запуска двух серверов, когда только один может отлично справиться с работой. Например, добавив простое промежуточное ПО в файл вашего сервера:
app.use(function(req, res, next) {
if(!req.secure) {
return res.redirect(['https://', req.get('Host'), req.url].join(''));
}
next();
});
Это перенаправляет любой небезопасный запрос на соответствующую страницу HTTPS. Например, от http://example.com/
до https://example.com/
и http://example.com/foo?bar=woo
до https://example.com/foo?bar=woo
. Это определенно поведение, которого я ожидал бы. Возможно, вам следует отфильтровать это хостом, поэтому он перенаправляет только на домены, для которых вы владеете, и установил надлежащий сертификат.
Если ваше приложение работает за другим сервером, например Nginx, вы можете добавить параметр конфигурации app.set('trust proxy', true)
. Или, что еще лучше, сделайте Nginx самой переадресацией, которая будет более эффективной, чем любое приложение Node.js.
Изменить: В соответствии с моими показателями join
немного быстрее, чем +
для конкатенации строк. Ничего драматичного, но каждая победа - это победа...