无法获取auth_request返回的标头和状态码

这里写自定义目录标题

  • 欢迎使用Markdown编辑器

欢迎使用Markdown编辑器

我有以下测试nginx配置:

user  nginx;
worker_processes  auto;error_log /dev/stderr debug;
pid        /var/run/nginx.pid;events {worker_connections  1024;
}http {include       /etc/nginx/mime.types;default_type  application/octet-stream;access_log  /dev/stderr  main;sendfile        on;keepalive_timeout  65;upstream content {server 127.0.0.1:4001;}server {listen 4000;server_name test;gzip off;autoindex off;location /test-auth {add_header X-Test "testvalue";return 200;}location /proxy {add_header "X-Test1" "test1";auth_request /test-auth;auth_request_set $test $sent_http_x_test;auth_request_set $test2 $upstream_status;add_header X-Test $test;add_header X-Test2 $test2;proxy_pass http://content?test=$test&test2=$test2;proxy_pass_request_body off;}}server {listen 4001;add_header X-Test3 "test3";return 200 "testt response $args";}
}

我期望请求HTTP将返回所有测试头:X-Test (由身份验证请求返回的头)、X-Test1 (仅是一个示例)、X-Test2 (身份验证请求HTTP的值)、X-Test3 (由content下游设置)。

但实际上,这个请求只返回X-Test1和X-Test2。我无法通过auth_request_set指令获取任何值(标头或返回状态)。我尝试了在谷歌中找到的两种变量名:KaTeX parse error: Double subscript at position 12: sent_http_x_̲test和upstream_http_x_test,但都没有成功。$test变量始终为空。

我看到了以下官方示例:,
但auth_request_set $test2 u p s t r e a m s t a t u s ; 行也不起作用, upstream_status;行也不起作用, upstreamstatus;行也不起作用,test2变量始终为空。

我哪里做错了?

问题是/test-auth位置没有配置上行,您可以尝试下面的配置。

改成 $upstream_http_x_test。

user  nginx;
worker_processes  auto;error_log /dev/stderr debug;
pid        /var/run/nginx.pid;events {worker_connections  1024;
}http {include       /etc/nginx/mime.types;default_type  application/octet-stream;access_log  /dev/stderr  main;sendfile        on;keepalive_timeout  65;upstream content {server 127.0.0.1:4001;}server {listen 4000;server_name test;gzip off;autoindex off;location /real-auth {add_header X-Test "testvalue";return 200;}location /test-auth {proxy_pass http://127.0.0.1:4000/real-auth;}location /proxy {add_header "X-Test1" "test1";auth_request /test-auth;auth_request_set $test $upstream_http_x_test;auth_request_set $test2 $upstream_status;add_header X-Test $test;add_header X-Test2 $test2;proxy_pass http://content?test=$test&test2=$test2;proxy_pass_request_body off;}}server {listen 4001;add_header X-Test3 "test3";return 200 "testt response $args";}
}

Why does auth_request require proxy_pass to be able to get headers and return status? –

  1. Alexander Pravdin
    Oct 13, 2021 at 15:17
    Seems that auth_request do not send request directlly, it looks like reading configure from /test-auth block. you can check the access.log, there’s requests sent to /test-auth, auth requests are directly sent to /real-auth –
    emptyhua
    Oct 13, 2021 at 15:23

  2. One of nginx contributors helped to find out the root cause: github.com/nginx/njs/issues/417#issuecomment-942494313 The issue is in ngx_http_headers_module. add_header is ignored for subrequest “(r != r->main)”, and auth_request is a subrequest. This means that add_header is working differently when a location is directly accessed versus as a subrequest. –
    Alexander Pravdin
    Oct 13, 2021 at 17:10

原文链接: https://stackoverflow.com/questions/69556521/can-not-get-headers-and-status-code-returned-by-auth-request

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/673346.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

02.02_111期_C++_模板笔记

使用函数模板 实现一个函数就可以起到上面三个函数才能起到的作用 当数据类型是int时&#xff0c;编译器生成一个函数&#xff0c;其形参类型都是int 当数据类型时double时&#xff0c;编译器生成一个函数&#xff0c;其形参类型都是double 在写入template<typename T>这…

Idea:Idea导入Module、子Module的方式及其可能遇到的问题

参考&#xff1a;https://blog.csdn.net/qjyws/article/details/127617536 1.父module的maven添加sub module xxx-module-xxx-api xxx-module-xxx-biz 2.project structure–>import module–>添加sub module 3.maven–>Reload project即可

为什么大模型需要向量数据库?

AIGC 时代万物都可以向量化&#xff0c;向量化是 LLM 大模型以及 Agent 应用的基础。 比如&#xff1a;爆火的 Google 大模型 Gemini 1.0 原生支持的多模态&#xff0c;在预训练的时候就是把文本、图片、音频、视频等多模态先进行 token 化&#xff0c;然后构建一维的“语言”…

深掘开源安全需求,破解开源治理难题

当下&#xff0c;中国金融科技行业在数字支付、数字信贷、金融风控等领域取得了很多创新成果&#xff0c;大幅提升了金融数字化和智能化水平&#xff0c;已经在金融科技的全球竞争中走在前列。 在此进程中&#xff0c;开源技术发挥了不可或缺的重要作用&#xff0c;根据我国金…

MySQL视图和索引

一、视图 1.什么是视图 MySQL 视图&#xff08;View&#xff09;是一种虚拟存在的表&#xff0c;同真实表一样&#xff0c;视图也由列和行构成&#xff0c;但视图并不实际存在于数据库中。行和列的数据来自于定义视图的查询中所使用的表&#xff0c;并且还是在使用视图时动态…

双非本科准备秋招(19.2)—— 设计模式之保护式暂停

一、wait & notify wait能让线程进入waiting状态&#xff0c;这时候就需要比较一下和sleep的区别了。 sleep vs wait 1) sleep 是 Thread 方法&#xff0c;而 wait 是 Object 的方法 2) sleep 不需要强制和 synchronized 配合使用&#xff0c;但 wait 强制和 s…

航芯ACM32G103开发板评测 06 1.28圆形屏幕 LVGL移植

航芯ACM32G103开发板评测 06 1.28圆形屏幕 LVGL移植 软硬件平台 航芯ACM32G103开发板1.28寸圆形彩色TFT显示屏高清IPS 模块240X240 SPI接口 GC9A01驱动芯片LVGL V8.3.1源码 LVGL LVGL&#xff08;Light and Versatile Graphics Library&#xff09;是一个免费的开源图形库&…

微信小程序实现吸顶、网格、瀑布流布局

微信小程序开发通常是在webview模式下编写&#xff0c;但是对小程序的渲染性能有一定的追求&#xff0c;就需要使用Skyline模式进行渲染&#xff0c;同时在这种模式下有也有一些特殊的组件&#xff0c;可以轻松的实现想要的效果&#xff0c;本文将介绍在Skyline模式下如何实现吸…

【iOS ARKit】人形提取

为解决人形分离和深度估计问题&#xff0c;ARKit 新增加了 Segmentation Buffer&#xff08;人体分隔缓冲区&#xff09;和Estimated Depth Data Buffer&#xff08;深度估计缓冲区&#xff09;两个缓冲区。人体分隔缓冲区作用类似于图形渲染管线中的 Stencil Buffer&#xff0…

进程状态 | 僵尸进程 | 孤儿进程 | 前台后台进程 | 守护进程

文章目录 1.进程的三种基本状态2.Linux中进程状态查看2.1.进程检测脚本2.2.各种状态查看 3.孤儿进程4.前台、后台、守护进程 1.进程的三种基本状态 进程的在系统当中是走走停停的&#xff0c;「运行 - 暂停 - 运行」的活动规律&#xff1b;进程在活动期间的三种状态&#xff1…

【leetcode题解C++】450.删除二叉搜索树中的节点 and 669.修剪二叉搜索树 and 108.将有序数组转换为二叉搜索树

450. 删除二叉搜索树中的节点 给定一个二叉搜索树的根节点 root 和一个值 key&#xff0c;删除二叉搜索树中的 key 对应的节点&#xff0c;并保证二叉搜索树的性质不变。返回二叉搜索树&#xff08;有可能被更新&#xff09;的根节点的引用。 一般来说&#xff0c;删除节点可…

分别通过select、多进程、多线程实现一个并发服务器

select #include<myhead.h>#define PORT 8888 //端口号 #define IP "192.168.114.109" //IP地址int main(int argc, const char *argv[]) {//1、创建用于接受连接的套接字int sfd socket(AF_INET, SOCK_STREAM, 0);if(sfd -1){perror(&q…

【Langchain+Streamlit】旅游聊天机器人

【LangchainStreamlit】打造一个旅游问答AI-CSDN博客 项目线上地址&#xff0c;无需openai秘钥可直接体验&#xff1a;http://101.33.225.241:8502/ github地址&#xff1a;GitHub - jerry1900/langchain_chatbot: langchainstreamlit打造的一个有memory的旅游聊天机器人&…

什么是数据库软删除,什么场景下要用软删除?(go GORM硬删除)

文章目录 什么是数据库软删除&#xff0c;什么场景下要用软删除&#xff1f;go GORM硬删除什么是数据库软删除什么场景下要用软删除 什么是数据库软删除&#xff0c;什么场景下要用软删除&#xff1f; go GORM硬删除 使用的是 GORM&#xff0c;默认启用了软删除功能&#xff…

设计模式(结构型模式)桥接模式

目录 一、简介二、桥接模式2.1、手机品牌接口2.2、手机功能接口2.3、抽象部分2.4、具体抽象部分2.5、使用 三、优点和缺点 一、简介 桥接模式&#xff08;Bridge Pattern&#xff09; 是一种结构型设计模式&#xff0c;用于将抽象部分与它的实现部分分离&#xff0c;使它们可以…

【算法题】96. 不同的二叉搜索树

题目 给你一个整数 n &#xff0c;求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种&#xff1f;返回满足题意的二叉搜索树的种数。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;5 示例 2&#xff1a; 输入&#xff1a;n 1 输出&#x…

js逆向-某东验证码逆向分析

声明 本文仅供学习参考&#xff0c;如有侵权可私信本人删除&#xff0c;请勿用于其他途径&#xff0c;违者后果自负&#xff01; 如果觉得文章对你有所帮助&#xff0c;可以给博主点击关注和收藏哦&#xff01; 插句个人内容&#xff1a;本人最近正在找工作&#xff0c;工作城…

MySQL数据库常用语法回顾及知识点合集(持续更新中……)

前言 本文适合有一定基础的进行快速简单回顾复习。 对于现如今的无论哪一类软件或应用&#xff0c;都几乎无法离开数据库&#xff0c;常见使用的关系性数据库如MySQL、Oracle&#xff0c;非关系性数据库如MongoDB、Redis等。而MySQL数据库则是软件开发中最常用的数据库之一&…

基于SpringBoot的美妆管理系统

文章目录 项目介绍主要功能截图&#xff1a;部分代码展示设计总结项目获取方式 &#x1f345; 作者主页&#xff1a;超级无敌暴龙战士塔塔开 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &…

CS50x 2024 - Lecture 1 - C

本周学习C语言&#xff0c;重点是函数、变量、条件语句和循环。 05:11介绍了编程语言的转换过程&#xff0c;从源代码到机器码&#xff0c;以及编译器的作用。 编译器是将一种语言翻译成另一种语言的程序 09:18使用CS50.dev进行编程&#xff0c;介绍了VS Code和命令行界面的…