我已经设置了一个代理服务器,它将客户端请求转发到上游服务器,到目前为止该服务器运行良好。然而,我试图解决的问题是强制上游服务器记录代理服务器的请求ID。这可能吗?只是为了让您知道$_SERVER上游服务器的变量包含[HTTP_X_REQUEST_ID] => 84708dd39a6c0c91e0d1a97404b40f75
代理服务器
配置
server {
...
add_header X-Request-ID $request_id;
proxy_set_header X-Request-ID $request_id;
location ~ ^/api/(.*) {
proxy_pass http://192.168.0.1:8080/$1$is_args$args;
}
...
}
Run Code Online (Sandbox Code Playgroud)
日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" "$request_id"';
Run Code Online (Sandbox Code Playgroud)
日志
172.17.0.1 ...... "84708dd39a6c0c91e0d1a97404b40f75"
Run Code Online (Sandbox Code Playgroud)
上游服务器
配置
server {
location ~ ^/index\.php(/|$) {
fastcgi_pass php_server:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
internal;
}
}
Run Code Online (Sandbox Code Playgroud)
日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" "$request_id"';
Run Code Online (Sandbox Code Playgroud)
日志
172.20.0.1 ...... "172.17.0.1" "7376e0cead9741e7ec07a9194efc80e6"
Run Code Online (Sandbox Code Playgroud)
预期日志
172.20.0.1 ...... "172.17.0.1" "84708dd39a6c0c91e0d1a97404b40f75"
Run Code Online (Sandbox Code Playgroud)
您实际上并不希望上游服务器将请求 ID 记录在$request_id. 相反,您希望它记录名为 的 HTTP 请求标头的内容X-Request-ID。
在这种情况下,您应该记录与该 HTTP 请求标头对应的变量:$http_x_request_id。
| 归档时间: |
|
| 查看次数: |
2519 次 |
| 最近记录: |