Я пытаюсь получить новый облачный сервер, работающий с версией сервера Ubuntu 20.04 по умолчанию, работающей с apache и node. Сервер узла работает без проблем, сообщающих об открытии порта 4006. Однако я считаю, что моя конфигурация apache не является. Запрос будет висеть очень-очень долго. В терминале узла ошибки не отображаются.
Я подтвердил, что на стороне узла все правильно, с помощью следующей команды, которая возвращает полный объект json из apache:
// Работает как положено и возвращает правильные результаты
curl -H 'Тип содержимого: application/json' -X POST <json>' -H "Хост: https://<https_url>.com" http://127.0.0.1:4006/graphql
Ошибка запроса через некоторое время
502 ошибка прокси
Журнал ошибок Apache
[Вс, 17 октября, 20:58:56.608793 2021] [прокси:ошибка] [pid 1596878] (111)Отказ в подключении: AH00957: HTTP: попытка подключения к [::1]:4006 (localhost) не удалась
[Вс, 17 октября, 20:58:56.608909 2021] [proxy_http:error] [pid 1596878] [client 207.46.13.93:27392] AH01114: HTTP: не удалось установить соединение с серверной частью: localhost
виртуальный хост
<VirtualHost <Server Ip Address>:80>
ServerName api.aDomain.com
Redirect permanent / https://api.aDomain.com/
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost <Server Ip Address>:443>
ServerName api.aDomain.com
ProxyRequests on
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so
ProxyPass / http://localhost:4006/
ProxyPassReverse / http://localhost:4006/
#certificates SSL
SSLEngine on
SSLCACertificateFile /etc/ssl/api.aDomain.com/apimini.ca
SSLCertificateFile /etc/ssl/api.aDomain.com/apimini.crt
SSLCertificateKeyFile /etc/ssl/api.aDomain.com/apimini.key
ErrorLog ${APACHE_LOG_DIR}/error_api.aDomain.com.log
CustomLog ${APACHE_LOG_DIR}/access_api.aDomain.com.log combined
</VirtualHost>
</IfModule>
вывод терминала
[узел] 1.19.4
[nodemon] для перезапуска в любое время введите `rs`
[nodemon] просматривает каталог(и): *.*
[nodemon] просмотр расширений: js,mjs,json
[nodemon] запуск `babel-node -r dotenv/config --inspect=9229 index.js`
Отладчик прослушивает ws://127.0.0.1:9229/c1fcf271-aea8-47ff-910e-fe5a91fce6d2
Для справки см.: https://nodejs.org/en/docs/inspector.
Список браузеров: caniuse-lite устарел. Пожалуйста, запустите следующую команду `npm update`
Сервер готов по адресу http://localhost:4006.
Узловой сервер
импортировать cors из 'cors'
импортировать очистку из './src/api/routes/scrape'
константный экспресс = требуется ('экспресс')
const { ApolloServer, gql } = require('apollo-server-express')
const { постграфил } = требуется ('постграфил')
const ConnectionFilterPlugin = require('postgraphile-plugin-connection-filter')
константа dbHost = процесс.env.DB_HOST
константа dbPort = процесс.env.DB_PORT
const ИмяБД = process.env.DB_NAME
константа dbUser = процесс.env.DB_USER
константа dbPwd = процесс.env.DB_PWD
константа dbUrl = dbPwd
? `postgres://${dbUser}:${dbPwd}@${dbHost}:${dbPort}/${dbName}`
: `postgres://${dbHost}:${dbPort}/${dbName}`
вар corsOptions = {
источник: '*',
optionsSuccessStatus: 200, // некоторые устаревшие браузеры (IE11, различные SmartTV) подавляют 204
}
асинхронная функция main() {
// Создаем схему, используя язык схем GraphQL
const typeDefs = gql`
введите запрос {
привет: строка
}
`
// Предоставляем функции разрешения для полей вашей схемы
константные распознаватели = {
Запрос: {
привет: () => 'Привет, мир!',
},
}
const server = new ApolloServer({ typeDefs, resolvers })
постоянное приложение = экспресс()
app.use (cors (corsOptions))
приложение.использовать(
postgraphile(process.env.DATABASE_URL || dbUrl, 'public', {
appendPlugins: [ConnectionFilterPlugin],
смотретьPg: правда,
графика: правда,
увеличитьGraphiql: правда,
})
)
server.applyMiddleware({приложение})
//Инструменты очистки
очистить (приложение)
постоянный порт = 4006
ожидайте app.listen({порт})
console.log(` Сервер готов по адресу http://localhost:${port}`)
}
main () .catch (e => {
консоль.ошибка(е)
процесс.выход(1)
})