Nginx修改请求头响应头
文章目录摘要环境问题重定向响应内容nginx 脚本如下调试过程浏览器 F12chrome 插件摘要通过 Nginx 实现三大核心功能修改重定向响应中的 IP 地址、替换响应内容中的目标 IP、改写页面资源引用的 IP 地址解决内外网 IP 映射场景下的访问异常问题。环境采用内外网 IP 映射架构应用服务部署于 192.168 私有网段业务侧通过 10.141 公网网段访问服务由 NAT 网关将 10.141 网段的不同端口映射至 192.168 私网对应服务端口。问题业务侧直接访问 10.141.100.1 时后端服务会返回指向 192.168.101.96 的重定向响应由于私网 IP 无法被外网直接访问导致业务请求失败。重定向常见的登录当点击登录后会重定向到私有地址。响应内容部分菜单 URL 返回私有地址。## cas 校验CAS 会校验 Host、Origin、Referer 等信息# 主要修改点ssl # https 用到 证书自己生成 proxy_set_header Accept-Encoding ; # 这个看情况有些是压缩后的为 禁用压缩才能使用 sub_filter 替换。 proxy_set_header Host # cas proxy_set_header Origin # 跨域 proxy_set_header Referer # 解决404 sub_filter # 修改响应的内容nginx 脚本如下http { map $http_referer $new_referer { ~^https?://[0-9]\.[0-9]\.[0-9]\.[0-9]:(.*)$ https://192.168.101.51:$1; default ; } map $http_origin $new_origin { [0-9]\.[0-9]\.[0-9]\.[0-9]:[0-9] https://192.168.101.97:8000; default ; } server { # 监听浏览器可访问的 IP 和端口 listen 8445 ssl; # SSL 配置 ssl_certificate D://liyingxiang/keystore/liyx.pem; ssl_certificate_key D://liyingxiang/keystore/uat2.key; # 强制使用安全协议 ssl_protocols TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; # 主代理规则 location ~* logout { proxy_set_header Accept-Encoding ; proxy_set_header Referer $new_referer; proxy_set_header Origin $new_origin; proxy_redirect ~^https?://[0-9]\.[0-9]\.[0-9]\.[0-9]:1?8(.*)$ http://127.0.0.1:18$1; # 这个其实就是修改 location proxy_pass https://192.168.101.51:28443; proxy_ssl_verify off; sub_filter_types application/json; sub_filter_once off; # 多次全部替换 sub_filter https://192.168.101.97:8443 http://127.0.0.1:18443; } location ~ /HDFS/NameNode/[0-9]/.*?\\.html { # 使用正则匹配 proxy_set_header Accept-Encoding ; proxy_set_header Referer $new_referer; proxy_pass https://192.168.101.51:20026; proxy_ssl_verify off; sub_filter_types application/json; sub_filter_once off; sub_filter 192.168.101.51:20026 127.0.0.1:20026; sub_filter https://192.168.101.97:8880 http://127.0.0.1:18880; sub_filter https://192.168.101.97:8881 http://127.0.0.1:18881; # sub_filter 无法用正则但可以写多个 } } }调试过程浏览器 F12查看 network对照正常的请求分析请求头 返回的 status、location。点击 Initiator 列会自动跳到前面发起源。点击前面发起源307 重定向看到 location后面就通过 location IP 去访问chrome 插件有些 Nginx 修改不全的地方配合插件会有奇效。 主要代码如下 manifest.json{“manifest_version”: 3,“name”: “ip转发”,“version”: “1.0”,“description”: “将访问 a 的请求重定向到 b”,“permissions”: [“declarativeNetRequest”,“declarativeNetRequestWithHostAccess”,“declarativeNetRequestFeedback”,“webRequest”,“tabs”],“host_permissions”: [“all_urls”],“declarative_net_request”: {“rule_resources”: [{ “id”: “ip_redirect”, “enabled”: true, “path”: “rules.json” }]},“background”: {“service_worker”: “background.js”}}规则配置把访问私网192.168的都转到nginx rules.json[{“id”: 102,“priority”: 1,“action”: {“type”: “redirect”,“redirect”: {“transform”: {“host”: “127.0.0.1”,“port”: “8445”}}},“condition”: {“urlFilter”: “||192.168.101.97:8443”,“resourceTypes”: [“main_frame”, “sub_frame”, “xmlhttprequest”, “script”, “image”, “other”]}},{“id”: 103,“priority”: 1,“action”: {“type”: “redirect”,“redirect”: {“transform”: {“host”: “127.0.0.1”,“port”: “8880”}}},“condition”: {“urlFilter”: “||192.168.101.97:8880”,“resourceTypes”: [“main_frame”, “sub_frame”, “xmlhttprequest”, “script”, “image”, “other”]}},{“id”: 104,“priority”: 1,“action”: {“type”: “redirect”,“redirect”: {“transform”: {“host”: “127.0.0.1”,“port”: “8445”}}},“condition”: {“urlFilter”: “||127.0.0.1:8443”,“resourceTypes”: [“main_frame”, “sub_frame”, “xmlhttprequest”, “script”, “image”, “other”]}},{“id”: 105,“priority”: 1,“action”: {“type”: “redirect”,“redirect”: {“transform”: {“host”: “127.0.0.1”}}},“condition”: {“urlFilter”: “||192.168.101.51”,“resourceTypes”: [“main_frame”, “sub_frame”, “xmlhttprequest”, “script”, “image”, “other”]}}]# 总结 本次主要是 **Nginx** 和 **Chrome** 插件配合完成 HTTPS 请求信息修改。 --- —————— 但行好事莫问前程你若盛开蝴蝶自来
上一篇/下一篇内容由系统自动关联
返回资讯列表 →