我有一个 graphql api,当使用http://example.com:4001/graphql但不适用于https://example.com:4001/graphql这是显而易见的,因为 https 占用端口 443 ,而这里我说的是使用 https 连接端口 4001。
我的流量正在通过 cloudflare,其中 SSL 是灵活的,这意味着从浏览器到 cloudflare 的任何 URL 都是 HTTPS,除此之外,直到源服务器都无关紧要。
在服务器上,我配置了 nginx,使用端口 4001,在位置块 /graphql 上,我在服务器上运行本地 graphql API。如下所示
server {
listen 4001; //Nginx port occupied on server
server_name example.com;
location /graphql {
proxy_pass http://localhost:4007; //This is the local qraphql api
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
请注意,我无法更改 URLhttp://example.com:4001/graphql到 http://example.com/graphql[出于某些显而易见的原因] 在 NGINX 中将位置 /graphql 块放在端口 443 或端口 80 服务器块下非常简单并且可以工作。
任何有关此事的帮助都将非常感激。
答案1
如果添加所需的参数...例如。
listen 4001 ssl;
--snip--
ssl_certificate ssl.crt;
ssl_certificate_key ssl.key;
那么监听器将接受 https