AWS ALB默认会传递x-b3-traceID,但不会修改或丢弃它。AWS ALB还支持X-Forwarded-For,X-Forwarded-Port和X-Forwarded-Proto头,以帮助您跟踪客户端请求和响应。以下是一个使用AWS ALB的Node.js应用程序示例,其中包括如何使用X-Forwarded-For和x-b3-traceID头:
const express = require('express');
const app = express();
app.set('trust proxy', true);
app.get('/', (req, res) => {
const traceId = req.headers['x-b3-traceid'];
const ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
const port = req.headers['x-forwarded-port'];
const protocol = req.headers['x-forwarded-proto'];
res.send(`Trace ID: ${traceId} \nIP: ${ip} \nPort: ${port} \nProtocol: ${protocol}`);
});
app.listen(3000, () => {
console.log('Server listening on port 3000');
});
在这个示例中,使用了app.set('trust proxy', true)来告诉Express应用程序可能通过代理服务器访问它。然后,可以通过req.headers对象中的x-b3-traceID,x-forwarded-for,x-forwarded-port和x-forwarded-proto属性访问这些头部信息。