Cloudflare SSL: Express не работает после применения SSL - PullRequest
0 голосов
/ 02 мая 2020

Пожалуйста, примите во внимание мои обстоятельства:

  1. Я создал бэкэнд-API для порта 8880 в Express. js в HTTP
  2. Я создал веб-сайт внешнего интерфейса в Next . js на порту 80, также в HTTP.
  3. Я регистрируюсь с cloudflare, они управляют моим DNS, я получаю их SSL, поэтому мой веб-сайт HTTP становится HTTPS.
  4. После успешного применения SSL к веб-интерфейсу API-интерфейс бэкэнда перестает получать запрос POST от входа в систему из внешнего интерфейса.

В результате я больше не могу войти на свой сайт, поскольку каждая попытка завершается неудачей, когда POST-запрос пытается отправить JSON данные для входа в систему. Как я могу исправить это нарушение SSL? Это прекрасно работало как HTTP к HTTP. Но теперь, как HTTPS к HTTP, получил сбой.

Вот что я пытался решить:

  1. HTTPS to HTTPS - это не удалось. Я попытался изменить серверную часть на HTTPS, но использовал самозаверяющий сертификат, следуя этой инструкции.

Мой код в приложении. js (серверная часть):

https.createServer({
    key: fs.readFileSync('server.key'),
    cert: fs.readFileSync('server.cert')
  }, app)
  .listen(port, function () {
    console.log(`Connected on port ${port}`)
  })

Настройте мои правила страницы Cloudflare - очевидно, cloudflare имеет настройки «Правила страницы» для вашего домена, поэтому я установил для себя domainname.com/api SSL: гибкий. Все еще не удалось. Тестирование в Почтальоне показало, что я успешно входил в систему с https://123.456.789.10:8880/api/signin, но не с https://domainname.com/api. Я включил morgan на Express и не увидел ping на конечной точке /api/signin.

Переключение серверной части с HTTPS на HTTP, оставив правила страницы в SSL Flexible - Согласно ответ на этот вопрос здесь , я думал, что это, безусловно, будет работать , поскольку Cloudflare говорит «Гибкая опция SSL позволяет устанавливать безопасное соединение HTTPS между вашим посетителем и Cloudflare, но заставляет Cloudflare подключаться к исходный веб-сервер по незашифрованному HTTP. Сертификат SSL не требуется на исходном веб-сервере, и ваши посетители по-прежнему будут видеть, что сайт поддерживает HTTPS. " Это также не удалось.

Итак, я все еще не могу связаться с / api / signin ни по domainname.com/api/signin, ни по https://123.456.789.10:8880/api/signin, ни по http://123.456.789.10:8880/api/signin. Морган ничего не показывает в консоли, когда я пытаюсь войти, тогда как раньше.

Кто-то должен решить проблему настройки внешнего интерфейса и внутреннего интерфейса на одном IP, но на двух разных портах, и заставить его работать с Cloudflare SSL раньше. Пожалуйста помоги!

...