是否可以在 nginx 中绑定 HTTPS 端口

是否可以在 nginx 中绑定 HTTPS 端口

我有一个 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/graphqlhttp://example.com/graphql[出于某些显而易见的原因] 在 NGINX 中将位置 /graphql 块放在端口 443 或端口 80 服务器块下非常简单并且可以工作。

任何有关此事的帮助都将非常感激。

答案1

如果添加所需的参数...例如。

  listen 4001 ssl;
  --snip--
  ssl_certificate ssl.crt;
  ssl_certificate_key ssl.key;

那么监听器将接受 https

相关内容