Проблема:
У меня есть веб-сервер, который безупречно работает при использовании Next на моем личном сервере. Недавно я перешел на Amazon EC2 и скопировал код и зависимости. После настройки EC2 и запуска сервера я быстро понял, что все вызовы приводят к ответу Timeout. Я уверен, что открыл правильные порты и в конечном итоге открыл все порты для отладки этой проблемы. Я исследую и отлаживаю эту проблему уже более 6 часов и буду признателен за любую помощь.
Тесты:
Когда я впервые понял, что мой сервер не отвечает Правильно, я попытался использовать простой сервер express на EC2 - он работал отлично, как и ожидалось. Мой второй отладочный тест заключался в том, чтобы убедиться, что проблема не связана с портом 443, поскольку я использовал HTTPS. Я создал еще один сервер express, на этот раз с HTTPS. Этот тест также работал, как ожидалось.
Отсюда я попытался запустить свой код как сборку для разработки, вместо того, чтобы строить сам код. Я видел, что он скомпилирован отлично. Это означает, что это должна быть проблема с отправкой следующего. js ответа клиенту.
Скомпилировано успешно.
Код:
Это самый простой для воспроизведения фрагмент кода для этого, просто настройте свой следующий. js и создайте собственный сервер ala :
pages / index.tsx
export default () => {
return <div>hi.</div>
}
server.ts
import express from 'express';
import next from 'next';
const dev = !(process.env.NODE_ENV || '').includes('production');
const app = next({ dev });
const handle = app.getRequestHandler();
app.prepare().then(async () => {
const serv = express();
serv.get('/this_works/', (req, res) => res.send('why?'));
// This does work on EC2.
serv.get('*', (req, res) => handle(req, res));
// This does not work.
// Using "return handle(req, res)" also does not work.
// Using app.render also does not work.
serv.listen(80, () => { console.log("up. please for the love of god.") });
});
Это отлично работает на моей машине, но не на EC2. На dev мы получаем то же сообщение, когда кто-нибудь заходит на сайт - он успешно компилируется. В целом проблема заключается в следующем: хотя данные отправляются обратно клиенту при отправке ответа express, данные не отправляются обратно клиенту при вызове следующего дескриптора или запроса рендеринга.
Если кто-нибудь может мне помочь, я был бы очень признателен. Спасибо.
Изменить: Я заметил интересную вещь: внутренние страницы, такие как 404, _document и _app, все еще загружаются.