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)
})