![是否可以在 nginx 中绑定 HTTPS 端口](https://linux22.com/image/791864/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E5%9C%A8%20nginx%20%E4%B8%AD%E7%BB%91%E5%AE%9A%20HTTPS%20%E7%AB%AF%E5%8F%A3.png)
我有一个 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