You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx中为4001端口绑定HTTPS以适配Cloudflare灵活SSL环境下的GraphQL API访问

Nginx中为4001端口绑定HTTPS以适配Cloudflare灵活SSL环境下的GraphQL API访问

我完全懂你的困扰——因为业务限制必须保留https://example.com:4001/graphql这个访问路径,但当前Nginx的4001端口只监听HTTP请求,自然无法处理HTTPS流量。结合Cloudflare的灵活SSL模式(浏览器到Cloudflare走HTTPS,Cloudflare到源站可兼容HTTP/HTTPS),我们可以通过给Nginx的4001端口配置HTTPS支持来解决问题,具体步骤如下:

1. 生成自签SSL证书(适配Cloudflare灵活SSL)

因为Cloudflare灵活SSL模式下,不会验证源站证书的可信度,所以用自签证书就足够满足需求。执行以下命令生成证书(路径可根据你的服务器实际情况调整):

# 先创建证书存放目录(如果不存在)
mkdir -p /etc/nginx/ssl
# 生成自签证书,有效期1年
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/example.com.key -out /etc/nginx/ssl/example.com.crt

执行过程中会提示填写一些信息,比如域名、组织名等,其中Common Name填写example.com即可,其他信息可以留空。

2. 修改Nginx配置,让4001端口支持HTTPS

把你现有的Nginx server块修改成如下配置,核心是开启ssl监听并添加证书路径:

server {
    listen 4001 ssl; # 开启HTTPS监听
    server_name example.com;

    # 配置刚生成的SSL证书和密钥
    ssl_certificate /etc/nginx/ssl/example.com.crt;
    ssl_certificate_key /etc/nginx/ssl/example.com.key;

    # 可选:优化SSL协议和加密套件,提升安全性
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location /graphql {
        proxy_pass http://localhost:4007;
        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;
    }
}

3. 验证配置并重启Nginx

先检查配置文件是否有语法错误:

nginx -t

如果输出nginx: configuration file /etc/nginx/nginx.conf test is successful,就可以重启Nginx让配置生效:

systemctl restart nginx

这样配置完成后,https://example.com:4001/graphql就能正常访问了——Cloudflare会处理浏览器端的HTTPS请求,然后转发到你服务器4001端口的HTTPS服务,最终代理到本地的GraphQL API。

备注:内容来源于stack exchange,提问作者Majid Khan Mohmand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 13:34:28