在我的用例中,我想在nginx中设置请求和响应中的当前时间戳。我想计算上游服务器所用的时间。因此,当请求到达nginx服务器时,我想将当前时间戳设置为标头,然后当响应来自上游时,我希望另一个标头具有该时间的时间戳。我将确保上游服务器将响应请求时间戳添加到响应中。
这是我的nginx配置,
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
keepalive_timeout 65;
client_max_body_size 500M;
#timeouts
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 1m;
send_timeout 600;
upstream backend {
server abcd.com:443;
keepalive 64;
}
#
# The default server
#
server {
listen 80;
server_name http_server;
error_log /var/log/nginx/error.log debug;
location /products {
rewrite ^/products/(.*) /$1/$2 break;
proxy_pass https://backend;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
}
# redirect not found pages to the static page /404.html
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
}
有人可以帮我这个吗?
答案 0 :(得分:0)
这并不是回答问题的答案,但是可以增加一些价值。
http://nginx.org/en/docs/varindex.html
列出了几个可用的变量。其中很大一部分是指与上游服务器相关的事物,例如import com.itko.lisa.vse.stateful.model.TransientResponse;
import com.itko.lisa.vse.stateful.model.Response;
import com.itko.util.ParameterList;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.lang.String;
import org.apache.log4j.*;
import groovy.util.logging.*;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
FileInputStream fileInputStream = new FileInputStream("C:/Softwares/LISA/CBO_CurrentBalance1/Data/BalanceReport.xlsx");
//FileInputStream fileInputStream = new FileInputStream("/home/lisa-user/Data/CBOPayment.xlsx");
XSSFWorkbook workbook = new XSSFWorkbook(fileInputStream)
XSSFSheet sheet = workbook.getSheet("Sheet1");
XSSFRow row;
XSSFCell cell;
Iterator rows = sheet.rowIterator();
while (rows.hasNext()) {
row = (XSSFRow) rows.next();
Iterator cells = row.cellIterator();
AccountNumber1 = testExec.getStateObject("AccountNumber1")
AccountNumber2 = testExec.getStateObject("AccountNumber2")
if (AccountNumber1 == cells.next().getStringCellValue()) {
if(cells.hasNext()) {
Balance = cells.next().getNumericCellValue();
testExec.setStateValue("Balance1", Balance);
}
}
if (AccountNumber2 == cells.next().getStringCellValue()) {
if (cells.hasNext()) {
Balance = cells.next().getNumericCellValue();
testExec.setStateValue("Balance2", Balance);
}
}
}
,$upstream_connect_time
,$upstream_first_byte_time
等。通过计算“输入”和“输出”之间的差异,这些将为您提供更多的见解。但是我不清楚哪个$upstream_header_time
变量或一组变量会为您提供与上游服务器交互的全部时间,也许其他人可以发布该信息。
您可以创建自定义日志格式,将这些变量的值添加到日志文件中,或者可能将它们添加到响应标头中。
答案 1 :(得分:0)
使用机器和人类友好的URLRequest
变量。