问题标签 [nginx-module]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
nginx - 如何使用 nginx 模块中的 URL 加载文件?
我正在编写一个 nginx 模块,该模块预计会在向客户端发送回复之前加载加载远程文件。
用户在 URL 中传递一个 ID。我使用该 ID 将 URL 加载到远程文件。我的测试看起来像这样:
id123
被转换为 URL,例如
现在我需要cute.png
从我的nginx
模块中加载。我可以用一个ngx_request
或一个来做到这一点ngx_upstream
吗?我无法找到任何明确的文档来说明如何做到这一点......
更新:
我现在(终于!)找到了子请求功能:
但是,我收到以下 HTML 代码的 404 错误,而不是来自 3rd 方网站的答案:
我的感觉是,现在它查询我的 nginx 服务器,而不是使用外部 TCP 连接从 3rd 方网站获取文件......
知道为什么这么简单的陈述会出错吗?
c - Nginx 模块编写:如何将请求转发到服务器?
我使用 nginx 作为反向代理,我一直在尝试编写一个 nginx 模块来处理传入的请求,如果它喜欢请求中存在的某些 HTTP 标头,nginx 将允许请求到达受保护的服务器(在nginx 代理)。现在,我已经成功实现了标头处理,但我一直在弄清楚如何将请求转发到服务器。
到目前为止,我已经研究了子请求,但我尝试的代码(或从现有模块复制,例如ngx_http_addition_filter_module
!)似乎都不起作用。要么我陷入一个循环,其中有 100 多个子请求被触发,要么什么都没有发生。我一直在尝试使用的代码:
处理ngx_http_foo_subrequest_done
程序如下所示:
请指教我做错了什么!
c - Nginx 模块:如何从过滤器重定向?
我正在编写一个自定义 nginx 模块,在其中使用过滤器进行一些处理。过滤器的设置如下所示:
我正在此body
过滤器中处理一些逻辑,并且在某种情况下,我想在客户端的浏览器中执行重定向到 localhost。过滤器主体代码如下所示:
我尝试过的事情:
- 将 Location 标头和 headers_out.status 设置为 302,但它向客户端返回一个空响应
- 设置 headers_out.location 但这仍然返回一个空响应
- 调用 ngx_http_send_header(r) 但这会返回一个 NGX_ERROR 响应
如何通过重定向响应客户端?
nginx - 在 auth_request 之后调用自定义 nginx 模块
我有一个自定义 nginx 模块,它在将请求代理到服务器之前设置一些请求头。我还使用 auth_request 进行身份验证。我的位置部分包含 auth_request 以及自定义模块指令。我想确保仅在 auth 子请求之后而不是在子请求中设置自定义标头。目前,我看到首先调用了自定义模块,并且在子请求本身中设置了标头。
nginx - 关于 nginx 模块的输出问题?如何解决?
我是 nginx 新手,我正在尝试开发一个简单的 nginx 模块,特别是一个处理程序模块。虽然这不是我真正想做的,但我尝试先完成这项任务。当浏览器(或客户端)连接到 nginx 时,我正在尝试获取 socketfd。我已经成功获取它。但是,当我尝试使用 dup2() 输出某些内容时,nginx 始终处于挂起状态并且什么也不输出。有时我可以在很长一段时间后得到输出,一旦我像 nginx -s stop 这样停止 nginx,输出立即出现。
像这样:到达http://100.100.60.199/nc?search=123456 get search=123456 HTTP/1.l HOST
我阅读了一些关于 nginx 模块的博客,发现处理程序模块有自己的模式(据我了解?)。例如,输出应该是 nginx_chain_t,我应该构造该链而不是像常规 c 代码那样使用 dup2。所以我想知道像下面的函数那样获得输出是否可行。
这是我的处理函数:
所以我想知道这是否可行,我怎样才能使用上面的方法把事情做好,或者任何人都可以说这是不可能的并且构造一个链是唯一的方法?
audio - 是否可以通过标准 GET 请求将广告或消息动态拼接到 MP3 文件中?
假设您有一个 60,000,000 字节的 MP3 文件,还有一个 500,000 字节的 MP3 广告,两者都以相同的比特率编码。
是否可以使用 nginx 或 apache 模块将 MP3“Content-Length”标头值更改为 60,500,000,然后控制传入的“Content-Range”请求,以便前 500,000 个字节返回广告音频,并且任何范围请求大于500,000 开始返回具有 500,000 字节偏移量的常规音频文件?
还是只能使用 FFmpeg 等应用程序将广告(或消息)拼接到 MP3 文件中以重新渲染整个文件?
抱歉,如果这是一个愚蠢的问题,我只是想跳出框框思考。
nginx - 无法更改 ngx_pagespeed 的选项
我能够成功地将 ngx_pagespeed 添加到 Digital Ocean 的 Nginx 服务器。我按照这个进行了自动安装:https: //www.modpagespeed.com/doc/build_ngx_pagespeed_from_source
该模块有效 - 例如,我可以看到它自动将我的 .jpg 图像转换为 .webp。此外,curl -I -p http://localhost| grep X-Page-Speed
返回X-Page-Speed: 1.13.35.2-0
标题。
但是,我无法编辑任何选项。当我尝试运行类似pagespeed rewrite_images on
,甚至pagespeed on
,我得到一个错误pagespeed: command not found
。
每个文档pagespeed
应该是 Nginx 的命令:https ://modpagespeed.com/doc/configuration
我尝试了其他几个命令:
whereis pagespeed
返回pagespeed:
which pagespeed
什么都不返回。
据我所知,这些应该返回完整路径,例如/usr/bin/pagespeed
nginx - 站点启用/中不允许使用 nginx“邮件”和“流”指令
当我尝试将流或邮件指令与 nginx 一起使用时,我遇到了问题。我正在使用 nginx/1.16.1 和 Ubuntu 18.04.4 LTS。
这是我的 nginx.conf
我想在我的站点配置之一(test.streamconf)中使用“流”指令
但是,如果我为启用站点的文件夹创建符号链接并使用“sudo nginx -t”测试我的配置,我会收到以下错误消息:
nginx: [emerg] "stream" 指令在 /etc/nginx/sites-enabled/test.streamconf:1 中不允许使用
nginx: 配置文件 /etc/nginx/nginx.conf 测试失败
我错了什么?
c - Nginx Module Code error_page 指令问题
我正在利用 ModSecurity WAF 来帮助阻止 tx 在 NGINX 上被认为是危险的:https: //github.com/SpiderLabs/ModSecurity https://github.com/SpiderLabs/ModSecurity-nginx
我的问题可以在这里找到: https ://github.com/SpiderLabs/ModSecurity-nginx/issues/182
我的问题的 TLDR 是 nginxerror_page
指令重置了原始客户端在重定向到 GET 期间发送的 HTTP 请求方法标头。这会导致 WAF 的误报日志报告客户端发送了一个带有 GET 等的 HTTP 正文,当他们真正发送一个 POST 并且 NGINX 命中error_page
重定向时,由于某些情况下上游在反向代理调用上超时。
为了解决这个问题,我需要对这个文件部分进行破解或公关: https ://github.com/SpiderLabs/ModSecurity-nginx/blob/master/src/ngx_http_modsecurity_rewrite.c#L145
在 sudo 代码中实现这样的目标:
而正是在这里,我一直无法解决上面的 sudo 代码。如何在这里创建一个 tx 上下文安全变量,该变量可以在各个阶段和内部error_page
重定向中持续存在以存储原始客户端 http 方法标头?
我登陆了这些 NGINX 页面指南,但到目前为止,还没有真正看到任何东西切入我想要的东西: https ://www.evanmiller.org/nginx-modules-guide.html
寻找任何了解该问题并可能能够将我的 sudo 代码转换为我可以在我的沙盒环境中测试的东西的 NGINX / C 大师。
注意我没有放弃我的 NGINX error_page 指令调用的奢侈。所以我确实需要一个我相信的上述 sudo 代码的解决方案。
谢谢!
nginx - Nginx 映射重定向捕获正则表达式/查询字符串捕获并重定向到新的
我正在尝试使用 map 指令在 nginx(openresty) 中设置批量重定向,但在从源 url 捕获正则表达式/查询字符串并转发到目标 url 时遇到了一些问题。下面就像我的设置
nginx.conf 就像
服务器块
新的重定向地图包含以下重定向
~^/test/123/(\w+)(\w+).*$ /US/en/test/$1-$2;
哪个效果很好,但我很难获得以下字符串
- 正则表达式捕获的部分 url
/Product.html?ProdNo=A5441&Brand=COMPANY
在新 url 中捕获
2.Regex Capture的部分url
在新 url 中捕获
任何帮助将不胜感激,干杯!