Puncte:1

Proxy invers Apache la Node - Conexiune refuzată: AH00957

drapel in

Î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)
})
djdomi avatar
drapel za
Apache încearcă să se conecteze prin IPv6, folosește 127.0.0.1 în loc localhost sau -ce va fi mai bine, leagă-ți aplicația la ipv4 ȘI ipv6 :-) ( `încercarea de conectare la [::1]:4006 (localhost) a eșuat`)
drapel de
O altă problemă minoră (probabil fără legătură): Aici `-H "Gazdă: https://.com"` nu trebuie să specificați `https://`, doar `-H "Host: domain.com"` este corect.
drapel in
De fapt folosesc IP-ul serverului. Ar fi trebuit să spun asta mai clar :D Voi actualiza

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.