私はこれについて丸2日間頭を悩ませています:DIは最初はリバースプロキシだと思っていました。もちろん、それはばかげたことでしたが、/graphiql
エンドポイントが完全に機能していたため、これは当てはまりませんでした。スキームがロードされていないだけです。
/graphql
そのため、エンドポイントが無期限にハングする理由がわかりません。psql dbにアクセスできない可能性があるとしか思えませんか? ただし、次の方法で/graphql
エンドポイントにアクセスできることをテストしました。
// Works as expected and returns results correctly
curl -H 'Content-Type: application/json' -X POST -d '<json>' -H "Host: https://<https_url>.com" http://127.0.0.1:4006/graphql
これはさらに混乱しています...
サーバー.js
import cors from 'cors'
import scrape from './src/api/routes/scrape'
const express = require('express')
const { ApolloServer, gql } = require('apollo-server-express')
const { postgraphile } = require('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 = {
origin: '*',
optionsSuccessStatus: 200, // some legacy browsers (IE11, various SmartTVs) choke on 204
}
async function main() {
// Construct a schema, using GraphQL schema language
const typeDefs = gql`
type Query {
hello: String
}
`
// Provide resolver functions for your schema fields
const resolvers = {
Query: {
hello: () => 'Hello world!',
},
}
const server = new ApolloServer({ typeDefs, resolvers })
const app = express()
app.use(cors(corsOptions))
app.use(
postgraphile(process.env.DATABASE_URL || dbUrl, 'public', {
appendPlugins: [ConnectionFilterPlugin],
watchPg: true,
graphiql: true,
enhanceGraphiql: true,
})
)
server.applyMiddleware({ app })
//Scraping Tools
scrape(app)
const port = 4006
await app.listen({ port })
console.log(` Server ready at http://localhost:${port}`)
}
main().catch(e => {
console.error(e)
process.exit(1)
})
簡潔にするために、ここに vhost を示します。
<VirtualHost 185.132.41.127:80>
ServerName api.miniatureawards.com
Redirect permanent / https://api.miniatureawards.com/
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost 185.132.41.127:443>
ServerAdmin jamie@hutber.com
ServerName api.miniatureawards.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
ErrorLog ${APACHE_LOG_DIR}/error_api.miniatureawards.com.log
CustomLog ${APACHE_LOG_DIR}/access_api.miniatureawards.com.log combined
</VirtualHost>
</IfModule>