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;
}