nginx学习笔记(三)

nginx变量

有一些内建变量是支持改写的,其中一个例子是 $args. 这个变量在读取时返回当前请求的 URL 参数串(即请求 URL 中问号后面的部分,如果有的话)

我们看一个通过修改 $args 变量影响标准的 HTTP 代理模块 ngx_proxy 的例子:

server {
listen 8080; location /test {
set $args "foo=1&bar=2";
proxy_pass http://127.0.0.1:8081/args;
}
} server {
listen 8081; location /args {
echo "args: $args";
}
}

我们在 http 配置块中定义了两个虚拟主机。第一个虚拟主机监听 8080 端口,其 /test 接口自己通过改写 $args 变量,将当前请求的 URL 参数串无条件地修改为 foo=1&bar=2. 然后 /test 接口再通过 ngx_proxy 模块的 proxy_pass 指令配置了一个反向代理,指向本机的 8081 端口上的 HTTP 服务 /args. 默认情况下, ngx_proxy 模块在转发 HTTP 请求到远方 HTTP 服务的时候,会自动把当前请求的 URL 参数串也转发到远方.

$ curl 'http://localhost:8080/test?blah=7'
args: foo=1&bar=2

不是所有的 Nginx 变量都拥有存放值的容器。拥有值容器的变量在 Nginx 核心中被称为“被索引的”(indexed);反之,则被称为“未索引的”(non-indexed)。

上一篇:菜鸟-手把手教你把Acegi应用到实际项目中(1.2)


下一篇:ubuntu-docker入门到放弃(七)操作系统