nginx nuxt cloudflare反向代理3000端口,实现https访问

Nuxt的运行依赖于Nodejs,常见使用pm2来管理,运行后是本地的3000端口,我们来说说反向代理出现502的问题。

首先,域名解析是代理模式,并且“SSL/TLS 加密 当前加密模式: 灵活”,之所以选择灵活,是为了更见简单,无需在服务器配置证书。

server {
    listen 80;
    server_name gettool.org;

    location / {
        proxy_pass http://localhost:3000;  # 代理到本地 3000 端口
        proxy_set_header Host $host;        # 保留主机头
        proxy_set_header X-Real-IP $remote_addr;  # 转发真实的 IP 地址
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  # 转发 IP
        proxy_set_header X-Forwarded-Proto $scheme;  # 转发协议
    }

    # 可选: 错误日志和访问日志
    error_log /var/log/nginx/gettool.org-error.log;
    access_log /var/log/nginx/gettool.org-access.log;
}

来看看这个代理,实际上会出现502错误。

网上给出的方案是:

proxy_ssl_server_name on;
proxy_ssl_name 域名;
proxy_set_header  Host 域名;

结果我测试,这种方法还是会出现502错误,这是ssl配置方法,需要的是443端口和证书。我试过加了证书后,改成443端口,SSL/TLS 加密改成源服务器加证书的方式来测试,还是不正确,502错误。

最后看了最开始80端口的反向代理日志:

2024/10/09 00:47:30 [error] 1578450#0: *1 upstream sent too big header while reading response header from upstream, client: 162.158.178.58, server: xxx.org, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:3000/", host: "xxx.org"

Nginx 报告的错误 upstream sent too big header while reading response header from upstream 通常是由于后端应用(在本例中是运行在 3000 端口的应用)返回的响应头太大,超出了 Nginx 默认允许的最大值。

改进后:

server {
    listen 80;
    server_name xxx.org;

    location / {
        proxy_pass http://localhost:3000;  # 代理到本地 3000 端口
        proxy_set_header Host $host;        # 保留主机头
        proxy_set_header X-Real-IP $remote_addr;  # 转发真实的 IP 地址
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  # 转发 IP
        proxy_set_header X-Forwarded-Proto $scheme;  # 转发协议
	proxy_buffer_size   128k;
        proxy_buffers       4 256k;
        proxy_busy_buffers_size 256k;
    }

    # 可选: 错误日志和访问日志
    error_log /var/log/nginx/xxx.org-error.log;
    access_log /var/log/nginx/xxx.org-access.log;
}
本条目发布于。属于软件分类,被贴了 标签。作者是

关于有个狸

2005年开始的一名站长,从事网站策划、运营,早期一批扎根阿里妈妈、Google Adsense的一员,目前司职前端与产品设计。

发表回复