主题
Rewrite 指令可用的全局变量如下:
bash
1. $args: # 该变量中存放了请求URL中的请求指令。比如 http://127.0.0.1:3001?arg1=value1&arg2=value2 中的 "arg1=value1&arg2=value2"。
2. $content_length: # 该变量中存放了请求头中的Content-length字段。
3. $content_type: # 该变量中存放了请求头中的 Content-type字段。
4. $document_root: # 该变量中存放了针对当前请求的根路径。
5. $document_uri: # 该变量中存放了请求的当前URI, 但是不包括请求指令。比如 http://xxx.abc.com/home/1?arg1=value1&arg2=value2; 中的 "/home/1"
6. $host: # 变量中存放了请求的URL中的主机部分字段,比如http://xxx.abc.com:8080/home中的 xxx.abc.com.
7. $http_host: # 该变量与$host唯一区别带有端口号:比如上面的是 xxx.abc.com:8080
8. $http_user_agent: # 变量中存放客户端的代理信息。
9. $http_cookie, # 该变量中存放客户端的cookie信息。
10. $remote_addr # 该变量中存放客户端的地址。
11. $remote_port # 该变量中存放了客户端与服务器建立连接的端口号。
12. $remote_user # 变量中存放客户端的用户名。
13. $request_body_file # 变量中存放了发给后端服务器的本地文件资源的名称
14. $request_method # 变量中存放了客户端的请求方式,比如 'GET'、'POST'等。
15. $request_filename # 变量中存放了当前请求的资源文件的路径名。
16. $request_uri # 变量中存放了当前请求的URI,并且带请求指令。
17. $query_string # 和变量$args含义一样。
18. $scheme # 变量中存放了客户端请求使用的协议,比如 'http', 'https'等。
19. $server_protocol # 变量中存放了客户端请求协议的版本, 比如 'HTTP/1.0'、'HTTP/1.1' 等。rewrite 常用操作
nginx
# 将请求 /a/prometheus/xxx 重写成 /xxx 后再传递给被代理的服务器
location /a/prometheus/ {
rewrite ^/a/prometheus(.*)$ $1 break;
proxy_pass http://prometheus:9090;
}
# 如果 proxy_pass 后不带 URL,则会直接把 nginx 接收的到原始 URL 原封不动地传递给被代理的服务器;
# 如果 proxy_pass 后带有 URL,则会把 location 中的前缀去掉后追加到这个 URL 后再代理过去;