ฉันกำลังพยายามรับเซิร์ฟเวอร์บนคลาวด์ใหม่ล่าสุดที่ทำงานกับเซิร์ฟเวอร์ Ubuntu รุ่นเริ่มต้น 20.04 ที่ทำงานกับ apache และโหนด เซิร์ฟเวอร์โหนดดูเหมือนจะทำงานโดยไม่มีปัญหาในการรายงานว่าพอร์ต 4006 เปิดอยู่ อย่างไรก็ตาม ฉันเชื่อว่าการกำหนดค่า apache ของฉันไม่ใช่ คำขอจะค้างเป็นเวลานานมาก ไม่มีการแสดงข้อผิดพลาดในเทอร์มินัลโหนด
ฉันยืนยันว่าทุกอย่างถูกต้องที่ฝั่งโหนดด้วยคำสั่งต่อไปนี้ซึ่งส่งคืนวัตถุ json แบบเต็มจาก apache:
// ทำงานตามที่คาดไว้และส่งกลับผลลัพธ์อย่างถูกต้อง
curl -H 'Content-Type: 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] [proxy:error] [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] กำลังดู dir(s): *.*
[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
โหนดเซิร์ฟเวอร์
นำเข้าคอร์จาก 'คอร์'
นำเข้าขูดจาก './src/api/routes/scrape'
const ด่วน = ต้องการ ('ด่วน')
const { ApolloServer, gql } = ต้องการ ('apollo-server-express')
const { postgraphile } = ต้องการ ('postgraphile')
const ConnectionFilterPlugin = ต้องการ ('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 = {
ต้นทาง: '*',
optionsSuccessStatus: 200, // เบราว์เซอร์รุ่นเก่าบางตัว (IE11, SmartTV ต่างๆ) สำลัก 204
}
ฟังก์ชัน async main() {
// สร้างสคีมาโดยใช้ภาษาสคีมา GraphQL
const typeDefs = gql`
พิมพ์ข้อความค้นหา {
สวัสดี: สตริง
}
`
// ระบุฟังก์ชันตัวแก้ไขสำหรับฟิลด์สคีมาของคุณ
ตัวแก้ไข const = {
แบบสอบถาม: {
สวัสดี: () => 'สวัสดีชาวโลก!',
},
}
เซิร์ฟเวอร์ const = ApolloServer ใหม่ ({ typeDefs ตัวแก้ไข })
แอป const = ด่วน ()
app.use(คอร์(corsOptions))
app.use(
postgraphile (process.env.DATABASE_URL || dbUrl, 'สาธารณะ', {
ผนวกปลั๊กอิน: [ConnectionFilterPlugin],
watchPg: จริง,
กราฟิก: จริง,
EnhanceGraphiql: จริง,
})
)
server.applyMiddleware({ แอป })
// เครื่องมือขูด
ขูด (แอพ)
พอร์ต const = 4006
รอ app.listen ({ พอร์ต })
console.log(` เซิร์ฟเวอร์พร้อมที่ http://localhost:${port}`)
}
หลัก (). จับ (e => {
คอนโซล ข้อผิดพลาด (จ)
กระบวนการ ทางออก(1)
})