Điểm:1

Proxy ngược của Apache tới Nút - Kết nối bị từ chối: AH00957

lá cờ in

Tôi đang cố gắng để một máy chủ dựa trên đám mây hoàn toàn mới hoạt động với phiên bản mặc định của máy chủ 20.04 ubuntu hoạt động với apache và node. Máy chủ nút dường như đang chạy mà không gặp sự cố khi báo cáo cổng 4006 đang mở. Tuy nhiên tôi tin rằng cấu hình apache của tôi thì không. Yêu cầu sẽ treo trong một thời gian rất dài. Không có lỗi nào được hiển thị trong thiết bị đầu cuối nút.

Tôi đã xác nhận rằng mọi thứ đều chính xác ở phía nút bằng lệnh sau trả về đối tượng json đầy đủ từ apache:

// Hoạt động như mong đợi và trả về kết quả chính xác 
curl -H 'Content-Type: application/json' -X POST <json>' -H "Host: https://<https_url>.com" http://127.0.0.1:4006/graphql

Lỗi yêu cầu sau một thời gian

lỗi proxy 502

Nhật ký lỗi Apache

[Chủ nhật ngày 17 tháng 10 20:58:56.608793 năm 2021] [proxy:error] [pid 1596878] (111)Kết nối bị từ chối: AH00957: HTTP: cố kết nối với [::1]:4006 (localhost) không thành công
[Chủ nhật ngày 17 tháng 10 20:58:56.608909 năm 2021] [proxy_http:error] [pid 1596878] [client 207.46.13.93:27392] AH01114: HTTP: không thể kết nối với chương trình phụ trợ: 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>

đầu ra thiết bị đầu cuối

[gật đầu] 1.19.4
[gật đầu] để khởi động lại bất cứ lúc nào, hãy nhập `rs`
[gật đầu] đang xem (các) thư mục: *.*
[gật đầu] xem tiện ích mở rộng: js,mjs,json
[gật đầu] bắt đầu `babel-node -r dotenv/config --inspect=9229 index.js`
Trình gỡ lỗi đang nghe trên ws://127.0.0.1:9229/c1fcf271-aea8-47ff-910e-fe5a91fce6d2
Để được trợ giúp, hãy xem: https://nodejs.org/en/docs/inspector
Danh sách trình duyệt: caniuse-lite đã lỗi thời. Vui lòng chạy lệnh tiếp theo `npm update`
 Máy chủ đã sẵn sàng tại http://localhost:4006

máy chủ nút

nhập cors từ 'cors'

nhập dữ liệu từ './src/api/routes/scrape'

const express = yêu cầu ('bày tỏ')
const {ApolloServer, gql } = yêu cầu('apollo-server-express')
const { postgraphile } = yêu cầu('postgraphile')
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 = {
  nguồn gốc: '*',
  optionsSuccessStatus: 200, // một số trình duyệt cũ (IE11, nhiều SmartTV khác nhau) bị nghẹt ở 204
}

chức năng không đồng bộ main() {
  // Xây dựng lược đồ, sử dụng ngôn ngữ lược đồ GraphQL
  const typeDefs = gql`
    gõ Truy vấn {
      xin chào: Chuỗi
    }
  `

  // Cung cấp các hàm phân giải cho các trường lược đồ của bạn
  bộ phân giải const = {
    Truy vấn: {
      xin chào: () => 'Xin chào thế giới!',
    },
  }

  máy chủ const = Máy chủ Apollo mới ({ typeDefs, bộ phân giải })

  ứng dụng const = express()
  app.use(cors(corsOptions))
  ứng dụng.sử dụng (
    postgraphile( process.env.DATABASE_URL || dbUrl, 'public', {
      appendPlugins: [ConnectionFilterPlugin],
      xemPg: đúng,
      đồ họa: đúng,
      nâng caoGraphiql: đúng,
    })
  )
  server.applyMiddleware({ ứng dụng })

  // Dụng cụ cạo
  cạo (ứng dụng)

  cổng const = 4006
  đang đợi app.listen({ port })
  console.log(` Máy chủ sẵn sàng tại http://localhost:${port}`)
}

main().catch(e => {
  console.error(e)
  process.exit(1)
})
djdomi avatar
lá cờ za
Apache cố gắng kết nối qua IPv6, sử dụng 127.0.0.1 thay vì localhost hoặc - tốt hơn là liên kết ứng dụng của bạn với ipv4 VÀ ipv6 :-) ( `cố gắng kết nối với [::1]:4006 (localhost) không thành công` )
lá cờ de
Một vấn đề nhỏ khác (có thể không liên quan): Tại đây `-H "Host: https://.com"` bạn không nên chỉ định `https://`, chỉ cần `-H "Host: domain.com"` là đúng.
lá cờ in
Tôi thực sự đang sử dụng IP của máy chủ. Lẽ ra tôi nên nói rõ hơn :D Tôi sẽ cập nhật

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.