Nginx proxy_set_header:即允许重新定义或添加字段传递给代理服务器的请求头。该值可以包含文本、变量和它们的组合。在没有定义proxy_set_header时会继承之前定义的值。默认情况下,只有两个字段被重定义:
1 2 |
|
如果启用缓存,来自之前请求的头字段“If-Modified-Since”, “If-Unmodified-Since”, “If-None-Match”, “If-Match”, “Range”, 和 “If-Range” 将不会被代理服务器传递。
一个不会变化的“Host”头请求字段可通过如下方式被传递:
1 |
|
然后,当字段不在请求头中就无法传递了,在这种情况下,可通过设置Host变量,将需传递值赋给Host变量
1 |
|
此外,服务器名称和端口一起通过代理服务器传递
1 |
|
如果请求头的存在空的字段将不会通过代理服务器传递出去
1 |
|
简而言之,proxy_set_header 就是可设置请求头-并将头信息传递到服务器端,不属于请求头的参数中也需要传递时,重定义下即可!
================================接下来看下测试案例=========================
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
|
======================proxy_set_header自定义header头无效的问题========================
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
|
================proxy_set_header中$proxy_host,$host,$http_host的区别================
1 2 3 4 5 6 7 8 9 10 11 12 |
|
==================不妨看一个proxy_set_header配置实例==================
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
|
下面将一一测试各个proxy_set_header设置的变量的内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
如果将后端服务器关闭了,则会出现502网管错误:
1 2 3 4 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
|
###### Nginx反向代理Tomcat访问报错400问题 #######
线上用nginx反向代理tomcat访问,配置完成后,直接访问tomcat完全正常,但是只要在nginx添加反向代理tomcat,访问nginx就会报错400。
原因和解决办法:
1)后端服务器设置有类似防盗链或者根据http请求头中的host字段来进行路由或判断功能的话,如果nginx代理层不重写请求头中的host字段,将会导致请求失败,报400错误。
解决办法:
1 |
|
2)nginx配置中header头部信息的host不能被配置重了。tomcat没有对headers中的host进行唯一校验。
解决办法(下面两个要去掉一个):
1 2 |
|
相关推荐: Hetzner实战安装proxmox开独立IP小鸡
昨天突然PT主机内存爆炸,母鸡也爆炸了, 经过一番沟通,Hetzner提出了三个选项: 更换硬件保留驱动; 更换硬件和驱动; 完整排查硬件问题。 考虑一下,还是选择第二项,完整更换一台服务器吧。 之前安装过proxmox,也是折腾了好长时间,这次又是一番折腾。…
恐龙抗狼扛1年前0
kankan啊啊啊啊3年前0
66666666666666