Получение внутренней ошибки сервера (500) с настройкой Node.js для использования HTTPS - PullRequest
0 голосов
/ 13 мая 2018

Я использую очень простой серверный скрипт

const https = require('https');
const fs = require('fs');

var options = options = {
    key: fs.readFileSync(__dirname+'/certs/private_key.pem'),
    cert: fs.readFileSync(__dirname+'/certs/my_cert.crt'),
    ca: fs.readFileSync(__dirname+'/certs/my_bundle.ca-bundle'),
}

https.createServer(options, (req, res) => {
res.writeHead(200);
res.end('hello world\n');
}).listen(3000,'example.com');

Этот пример взят из https://helpdesk.ssls.com/hc/en-us/articles/115001603071-How-to-install-a-certificate-on-Node-js.

Мой .htaccess выглядит так

RewriteEngine on
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://example.com:3000/$1 [L,P,QSA]

Цель - перенаправить весь трафик на сервер с использованием HTTPS.Когда я выполняю команду

node server.js

Нет ошибок, и сервер прослушивает.Когда я пытаюсь подключиться через браузер, используя

https://example.com

, я получаю внутреннюю ошибку сервера и не могу понять, в чем проблема, потому что я не могу понять, как получить какие-либо журналы из node.js.

Если я настрою сервер на прослушивание по обычному HTTP и установлю правило перезаписи .htaccess для перенаправления на сайт по обычному HTTP, это будет работать нормально.Я не могу понять на всю жизнь, что я делаю неправильно, потому что, когда я тестирую сервер локально с сертификатами, он, кажется, работает нормально по HTTPS (то есть https://localhost:3000, даже если браузер говорит, что сертификат недействителен),Любая идея, в чем проблема и в любом случае, чтобы получить соответствующие журналы из node.js?

1 Ответ

0 голосов
/ 14 мая 2018

Я нашел решение, которое, кажется, работает, но помни, что я нуб.

Просто краткий контекст.

  • В настоящее время Godaddy хранит мои файлы (у меня самый дешевый тариф).

Вместо того, чтобы пытаться настроить node.js в качестве HTTPS-сервера, я просто запускаю его как обычный HTTP-сервер. Для возможностей SSL я устанавливаю сертификаты (закрытый ключ, пакет и т. Д.) С помощью инструмента конфигурации GoDaddy в CPanel, который называется «SSL / TLS». Когда это будет сделано, я могу набрать:

https://example.com

и соединение отображается как безопасное. Чтобы это работало с обычным HTTP-сервером node.js, мне пришлось пересмотреть правила перезаписи в основном файле .htaccess. А именно

RewriteEngine on
RewriteCond %{HTTPS} off                                   # To ensure no redirect loop
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]        # Redirect to the secure site
RewriteRule (.*) http://example.com:3000/$1 [L,P,QSA]      # Internally, however, pass all request to the regular HTTP node.js server listening on port 3000

Теперь я могу ввести любой URL в браузере (например, www.example.com, example.com, http://example.com, https://example.com), и все они перенаправляются на https://example.com и все данные веб-сайта обычно выбираются через безопасное соединение в соответствии с браузером.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...