PHP试题网_中国最大的免费网络PHP试题测试平台,PHP试卷调查,PHP试卷模板、PHP考试测验
公告: PHP试题网于2022.06.21变更为少儿编程学院


由于后端接口是不能直接对外暴露,只能用前端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"; # 仅仅是打个标记,知道走的是这个路由,可以去掉
}





作者:OK兄 浏览次数:45