找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 436|回复: 0

[L/WNAMP] nginx代理后端只支持POST的go接口,一直出现404

  [复制链接]
发表于 2023-2-24 15:08 | 显示全部楼层 |阅读模式
由于后端接口是不能直接对外暴露,只能用前端nginx来代理,但发现了一个奇怪的问题:记录如下

1、后端返回426的header头,真是第一回见到,google之:
    HTTP/1.1 426 Upgrade Required
    Connection: close

答案:nginx转发默认使用http1.0协议,由于后端协议为http1.1,补充协议头即可,参数如下:
     proxy_http_version 1.1;
     proxy_set_header Connection "";


2、接着出现404,奇怪了,无论POST还是GET都是一样的结果,QQ群里有运维的人说:nginx只负责专发,又没干其它的事,肯定是你弄错了。既然人家专业运维人员都这样说了,那有可能真的是我配置参数的问题。
按照最小法测试原则,只保留有用的proxy_pass,proxy_http_version、proxy_set_header Connection ""参数,其它全部注释掉,挨个测试参数,最后结果如下:
location /tucao {
    #rewrite ^/tututu$    http://后端域名/tututu  last; ############## 这一步是多余的,加了它,一定会在header头里出现302
    proxy_pass  http://后端域名/tututu;
    #proxy_set_header Host $http_host; #################只要有这个header头,POST方式就变为GET了
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Nginx-Proxy true;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    add_header headerval  "here23333333"; # 仅仅是打个标记,知道走的是这个路由,可以去掉
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|学习笔记

GMT+8, 2024-9-8 08:55 , Processed in 0.024050 second(s), 14 queries , APCu On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表