Încerc să obțin un server nou-nouț bazat pe cloud, care funcționează cu o versiune implicită a serverului 20.04 ubuntu, care funcționează cu apache și node. Serverul nod pare să ruleze fără probleme care raportează că portul 4006 este deschis. Cu toate acestea, cred că configurația mea Apache nu este. Solicitarea se va opri foarte mult timp. Nu sunt afișate erori în terminalul nodului.
Am confirmat că totul este corect pe partea nodului cu următoarea comandă care returnează obiectul json complet de la apache:
// Funcționează conform așteptărilor și returnează rezultatele corect
curl -H „Content-Type: application/json” -X POST <json>” -H „Gazdă: https://<https_url>.com” http://127.0.0.1:4006/graphql
Solicitați eroare după ceva timp
502 eroare de proxy
Jurnal de erori Apache
[Dum. Oct 17 20:58:56.608793 2021] [proxy:error] [pid 1596878] (111)Conexiune refuzată: AH00957: HTTP: încercarea de conectare la [::1]:4006 (localhost) a eșuat
[Dum. Oct 17 20:58:56.608909 2021] [proxy_http:error] [pid 1596878] [client 207.46.13.93:27392] AH01114: HTTP: nu s-a putut realiza conexiunea la backend: localhost
vhost
<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>
ieșire terminală
[nodemon] 1.19.4
[nodemon] pentru a reporni oricând, introduceți `rs`
[nodemon] vizionare director(e): *.*
[nodemon] vizionarea extensiilor: js,mjs,json
[nodemon] pornind `babel-node -r dotenv/config --inspect=9229 index.js`
Depanator ascultă pe ws://127.0.0.1:9229/c1fcf271-aea8-47ff-910e-fe5a91fce6d2
Pentru ajutor, consultați: https://nodejs.org/en/docs/inspector
Lista de browsere: caniuse-lite este depășit. Rulați următoarea comandă `npm update`
Server gata la http://localhost:4006
Node server
import cors din „cors”
importați scrape din „./src/api/routes/scrape”
const express = require('express')
const { ApolloServer, gql } = require('apollo-server-express')
const { postgrafile } = require('postgrafile')
const ConnectionFilterPlugin = require('postgraphile-plugin-connection-filter')
const dbHost = process.env.DB_HOST
const dbPort = process.env.DB_PORT
const dbName = process.env.DB_NAME
const dbUser = process.env.DB_USER
const dbPwd = process.env.DB_PWD
const dbUrl = dbPwd
? `postgres://${dbUser}:${dbPwd}@${dbHost}:${dbPort}/${dbName}`
: `postgres://${dbHost}:${dbPort}/${dbName}`
var corsOptions = {
origine: '*',
opțiuniSuccessStatus: 200, // unele browsere vechi (IE11, diverse SmartTV-uri) se sufocă cu 204
}
funcția asincronă main() {
// Construiți o schemă, folosind limbajul de schemă GraphQL
const typeDefs = gql`
tip Query {
salut: String
}
`
// Furnizați funcții de rezoluție pentru câmpurile dvs. de schemă
const resolvers = {
Interogare: {
salut: () => 'Bună lume!',
},
}
server const = ApolloServer nou ({ typeDefs, resolvers })
const app = expres()
app.use(cors(corsOptions))
app.use(
postgraphile(process.env.DATABASE_URL || dbUrl, „public”, {
appendPlugins: [ConnectionFilterPlugin],
watchPg: adevărat,
graphiql: adevărat,
enhanceGraphiql: adevărat,
})
)
server.applyMiddleware({ aplicație })
//Unelte de răzuit
răzuire (aplicație)
const port = 4006
așteaptă app.listen({ port })
console.log(` Server gata la http://localhost:${port}`)
}
main().catch(e => {
console.error(e)
proces.ieșire(1)
})