nginx转发的问题


我在项目配置的时候遇到一个问题:

配置了域名转发,且配置了https

nginx配置如下:

bash 复制代码
server {
    listen 443 ssl;
    server_name yourdomain.com;

    ssl_certificate /path/to/your/certificate.crt;
    ssl_certificate_key /path/to/your/private.key;

    location / {
        proxy_pass http://backend_ip_address;
    }
}

浏览器访问的时候通过https://yourdomain.com/admin (静态文件的转发配置没有贴)

静态文件是可以读到的,但是在访问登录接口的时候出现问题了,看了下请求信息发现:

1、通过域名访问后,登录接口的请求的地址显示为后端登录接口服务器的IP地址

2、接口请求变成了http请求。

以上两个原因造成我的服务异常。

最终解决的方法:

再转发的时候没有保留原始的主机名传递给后端服务器

bash 复制代码
server {
    listen 443 ssl;
    server_name yourdomain.com;

    ssl_certificate /path/to/your/certificate.crt;
    ssl_certificate_key /path/to/your/private.key;
    
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        proxy_pass http://backend_ip_address;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

总结下排查步骤:

1、检查 Nginx 配置:确保 server_name 配置正确,并且 proxy_set_header Host $host; 配置已包含。

2、检查后端服务:确认后端服务在返回重定向或生成 URL 时使用了正确的域名。

3、查看浏览器开发者工具:使用浏览器的开发者工具查看网络请求,检查重定向是否来自后端服务或 Nginx,并查看响应头中的 Location 字段

但是有个问题,同样的架构,我有一个其他的项目,location配置的时候只配置了proxy_pass,没有出现问题,先记录一下吧。

相关推荐
李纲明7 小时前
WordPress 古腾堡点「更新」报「不是有效的 JSON 响应」:我按 REST 接口一路查下来的顺序
运维·nginx·php·wordpress·rest api
你看我名字8 小时前
LNMP 生产架构与云运维实践:Nginx、PHP-FPM、MySQL 全链路分析
运维·nginx·架构
疯狂成瘾者12 小时前
海康威视 WSS 视频取流原理:6014/559 端口、Nginx 代理与 TLS 证书问题
运维·nginx·音视频
李纲明13 小时前
WordPress 首页正常、内页全 404:固定链接与伪静态规则排查步骤(Apache / Nginx)
nginx·apache·wordpress
小天源1 天前
从 Nginx 日志到访问分析:轻量化网站监测服务的架构实践
jvm·nginx·网络安全·架构·网络监控
幸福清风1 天前
从域名到一行 nginx 配置:一次站点 HTTPS 证书更换与排障复盘
python·nginx·https
梅梅绵绵冰1 天前
Nginx反向代理
运维·nginx
2601_965619692 天前
AI视频制作:财经数据可视化视频怎么做:AI 自动生成图表动画的实操流程
人工智能·nginx·音视频
2601_965619693 天前
历史解说视频怎么做:青铜器瓷器文物画面自动对齐的完整教程
运维·nginx·音视频
姜鱼问生3 天前
每次开机手动检查 6 样东西?我写了个 2 秒自检脚本
运维·网络·nginx·docker·容器