关于NGINX反向代理的一些坑

789次阅读
没有评论

共计 1198 个字符,预计需要花费 3 分钟才能阅读完成。

$host$http_host 的比较

特性$host$http_host
来源Host 头部时:取 Host 头部中的主机名部分
Host 头部时:取 Nginx 配置中的 server_name
Host 头部时:取原始的 Host 头部内容
Host 头部时:为空
包含端口号不包含端口号,即使 Host 头部中有端口号也会被去除包含端口号,如果 Host 头部中有端口号会保留
大小写处理将主机名转换为小写保留原始大小写格式
非法字符处理过滤掉主机名中非法的字符不做处理,保留原始内容
Host 头部时的值使用配置中的 server_name为空
典型应用场景– 生成标准化的主机名
– 重定向、日志记录
– 防止主机名注入攻击
– 需要保留客户端提供的原始主机信息
– 后端服务需要完整的 Host 信息
安全性更安全,适合默认使用可能存在安全风险,需谨慎使用

proxy_pass 后面是否带斜杠 / 的区别

特性proxy_pass 带斜杠 /proxy_pass 不带斜杠
配置示例proxy_pass http://backend/;proxy_pass http://backend;
URI 重写行为替换匹配的 location 路径保留匹配的 location 路径
后端接收的 URIbackend_uri + 剩余请求路径backend_uri + 原始请求路径
客户端请求示例http://yourserver/app/page1http://yourserver/app/page1
后端接收的请求http://backend/page1http://backend/app/page1
应用场景后端不需要 location 前缀后端需要完整的请求路径
注意事项proxy_pass URI 末尾需有 /proxy_pass URI 末尾不应有 /

Nginx 一些其他配置

指令作用详细说明示例用法
proxy_set_header Range $http_range;将客户端的 Range 头部传递给后端服务器– 支持断点续传和流媒体播放
– 默认情况下 Nginx 不会转发 Range 头部
– 配置后可使后端处理部分内容请求(返回 206 Partial Content
proxy_set_header Range $http_range;
proxy_set_header If-Range $http_if_range;将客户端的 If-Range 头部传递给后端服务器– 与 Range 头部配合,支持条件性的范围请求
– 默认情况下 Nginx 不会转发 If-Range 头部
– 配置后后端可正确处理条件性请求
proxy_set_header If-Range $http_if_range;
proxy_redirect off;禁用 Nginx 对后端返回的重定向头部的自动修改– 默认情况下,Nginx 会重写后端返回的 LocationRefresh 头部
– 配置此指令后,Nginx 将直接传递后端的重定向头部,不做修改
proxy_redirect off;
正文完
 0
Monologue
版权声明:本站原创文章,由 Monologue 于2024-09-29发表,共计1198字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码