Сервер Express 502 Bad Gateway с неправильной маршрутизацией NGINX ⇐ Linux
Сервер Express 502 Bad Gateway с неправильной маршрутизацией NGINX
Я пытаюсь настроить экспресс-сервер, который обслуживает приложение next.js, и я хочу запустить его через порт 4000, направить его через nginx на порт 443 и обновить все запросы с порта 80 на порт 443.< /п> В настоящее время, когда я пытаюсь открыть https://sitename.com, появляется сообщение об ошибке 502 плохой шлюз, но если я открываю https://sitename.com:4000, он фактически показывает сайт. (брандмауэр позволяет 4000).
Экспресс-приложение app.js:
const path = require('path'); const express = require('express'); const https = require('https'); const fs = require('fs'); const next = require('следующий'); const cors = require('cors'); const dev =process.env.NODE_ENV !== 'prod'; const nextApp = next({dev, dir: path.resolve(__dirname, '../iron/build/server') }); const handle = nextApp.getRequestHandler(); константное приложение = экспресс(); константный порт = 4000; // HTTPS-порт nextApp.prepare().then(() => { если (dev) { app.use(cors({ origin: 'http://localhost:' + порт })); // Обновление с использованием порта сервера разработки Next.js } еще { app.use(cors({ origin: 'https://section5.xyz' })); } app.get('*', (req, res) => { дескриптор возврата (req, res); }); app.use(express.static('public')); константа httpsOptions = { ключ: fs.readFileSync('../privatekey.pem'), сертификат: fs.readFileSync('../certificate.pem'), }; https.createServer(httpsOptions, app).listen(port, (err) => { если (ошибка) выбросить ошибку; console.log(`> Готово на порту HTTPS ${port}`); }); }); модуль.экспорт = приложение; Файл NGINX:
сервер { слушай 80; слушай [::]:80; имя_сервера имя_сервера.com; расположение / { proxy_pass http://localhost:4000; proxy_http_version 1.1; proxy_set_header Обновление $http_upgrade; proxy_set_header Соединение «обновление»; proxy_set_header Хост $host; proxy_cache_bypass $http_upgrade; } } сервер { слушать 443 SSL; слушать [::]:443 SSL; имя_сервера имя_сервера.com; ssl_certificate/home/artemis/BLUE/certificate.pem; ssl_certificate_key /home/artemis/BLUE/privatekey.pem; расположение / { proxy_pass http://localhost:4000; proxy_http_version 1.1; proxy_set_header Обновление $http_upgrade; proxy_set_header Соединение «обновление»; proxy_set_header Хост $host; proxy_cache_bypass $http_upgrade; } } Я пытался просто отобразить фиктивную страницу или отключить nginx и запустить его через порт 443 из коробки. Есть ли какая-то конфигурация, которой мне не хватает? Возможно, я использую и nginx, и express для SSL-части, и они ужасно взаимодействуют друг с другом, или, может быть, мое следующее приложение запускается неправильно, я понятия не имею.
Заранее благодарим за вашу щедрую помощь.
Я пытаюсь настроить экспресс-сервер, который обслуживает приложение next.js, и я хочу запустить его через порт 4000, направить его через nginx на порт 443 и обновить все запросы с порта 80 на порт 443.< /п> В настоящее время, когда я пытаюсь открыть https://sitename.com, появляется сообщение об ошибке 502 плохой шлюз, но если я открываю https://sitename.com:4000, он фактически показывает сайт. (брандмауэр позволяет 4000).
Экспресс-приложение app.js:
const path = require('path'); const express = require('express'); const https = require('https'); const fs = require('fs'); const next = require('следующий'); const cors = require('cors'); const dev =process.env.NODE_ENV !== 'prod'; const nextApp = next({dev, dir: path.resolve(__dirname, '../iron/build/server') }); const handle = nextApp.getRequestHandler(); константное приложение = экспресс(); константный порт = 4000; // HTTPS-порт nextApp.prepare().then(() => { если (dev) { app.use(cors({ origin: 'http://localhost:' + порт })); // Обновление с использованием порта сервера разработки Next.js } еще { app.use(cors({ origin: 'https://section5.xyz' })); } app.get('*', (req, res) => { дескриптор возврата (req, res); }); app.use(express.static('public')); константа httpsOptions = { ключ: fs.readFileSync('../privatekey.pem'), сертификат: fs.readFileSync('../certificate.pem'), }; https.createServer(httpsOptions, app).listen(port, (err) => { если (ошибка) выбросить ошибку; console.log(`> Готово на порту HTTPS ${port}`); }); }); модуль.экспорт = приложение; Файл NGINX:
сервер { слушай 80; слушай [::]:80; имя_сервера имя_сервера.com; расположение / { proxy_pass http://localhost:4000; proxy_http_version 1.1; proxy_set_header Обновление $http_upgrade; proxy_set_header Соединение «обновление»; proxy_set_header Хост $host; proxy_cache_bypass $http_upgrade; } } сервер { слушать 443 SSL; слушать [::]:443 SSL; имя_сервера имя_сервера.com; ssl_certificate/home/artemis/BLUE/certificate.pem; ssl_certificate_key /home/artemis/BLUE/privatekey.pem; расположение / { proxy_pass http://localhost:4000; proxy_http_version 1.1; proxy_set_header Обновление $http_upgrade; proxy_set_header Соединение «обновление»; proxy_set_header Хост $host; proxy_cache_bypass $http_upgrade; } } Я пытался просто отобразить фиктивную страницу или отключить nginx и запустить его через порт 443 из коробки. Есть ли какая-то конфигурация, которой мне не хватает? Возможно, я использую и nginx, и express для SSL-части, и они ужасно взаимодействуют друг с другом, или, может быть, мое следующее приложение запускается неправильно, я понятия не имею.
Заранее благодарим за вашу щедрую помощь.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение