文章目录[隐藏]
添加以下三行指令到网站.conf 文件中:
proxy_ssl_name www.example.com; proxy_ssl_server_name on; proxy_redirect off;
proxy_ssl_name www.example.com指令解释
当你的nginx服务器作为反向代理,将client的请求转发到一个SSL服务器时,需要在HTTP请求头中包含SSL服务器的名称,这样SSL服务器才能正确地响应该请求。proxy_ssl_name指令就是设置proxy_pass指令所代理的SSL服务器的名称,即www.example.com。这样,在转发请求时,nginx就会在请求头中添加"Host: www.example.com"的参数,保证请求被正确地路由到目标SSL服务器。
proxy_ssl_server_name指令是一个Nginx HTTP upstream模块和mail proxy模块的配置项,它通常和proxy_pass
一起使用,用于在upstream的HTTP请求头中添加SSL服务器的名称。将该参数设置为“on”时,Nginx会在upstream请求头中添加"Host: proxy_host"参数,其中proxy_host是从代理目标的URL中提取的被连接的域名或IP地址。
举个例子,假设配置文件中有以下两个指令:
proxy_pass https://example.com; proxy_ssl_server_name on;
这两个指令表示将所有请求转发到example.com,并在upstream请求头中添加"Host: example.com"参数,确保请求被正确转发到目标SSL服务器。
proxy_redirect是一个Nginx的配置项,主要用于配置代理服务器(reverse proxy)的重定向规则。当代理服务器接收到来自客户端的请求后,代理服务器会将请求转发给后端实际处理请求的服务器,此时如果后端服务器响应的URL与客户端请求的URL不一致,此时就需要使用proxy_redirect
来修改响应中的URL,让客户端正确跳转。
proxy_redirect off
选项表示禁用代理服务器的自动重定向,代理服务器不会据此修改响应中的URL。这可以用于避免代理服务器对后端服务器响应的URL进行额外的重定向,从而加快请求处理速度,并降低带宽消耗。
举个例子,如果你的Nginx配置文件中有以下指令:
proxy_pass http://backend-server; proxy_redirect off;
问题原因:nginx中proxy_buffer_size默认值是4k,第三方地址响应头超过了此长度,Nginx报upstream sent too big header错误,然后client收到的是502。
解决方案:在http字段中增加以下三个参数
proxy_buffer_size 128k;
作用:Nginx使用该大小申请read_buf(读取数组长度),即大小指定了 upstream header 最大长度,如果响应头超过了这个长度,Nginx会报upstream sent too big header错误,然后client收到的是502。
proxy_buffers 32 32k;
作用:设置存储被代理服务器响应的body所占用的buffer个数和每个buffer大小。
proxy_busy_buffers_size 64k;
作用:proxy_busy_buffers_size不是独立的空间,他是proxy_buffers和proxy_buffer_size的一部分。
nginx会在没有完全读完后端响应就开始向客户端传送数据,所以它会划出一部分busy状态的buffer来专门向客户端传送数据(建议为proxy_buffers中单个缓冲区的2倍),然后它继续从后端取数据。
proxy_busy_buffer_size参数用来设置处于busy状态的buffer有多大。