在不使用 Cloudfront CIDR IPS 的情况下从 Nginx 中的 Cloudfront 获取 ClientIp
Get ClientIp from Cloudfront in Nginx without using Cloudfront CIDR IPS
当 AWS EC2 中间有 Nginx 服务器时,如何在 NODE.JS 应用程序中从云端获取客户端 IP?
我的建议是使用提供的 CloudFront headers、link - [https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-cloudfront-headers.html]
您首先需要做的就是转到 Cloudfront -> Select Distribution -> Behaviors -> 然后在 'Cache key and origin requests'
中执行以下操作
Select 'CachingDisabled' 对于 'Cache policy' 下拉列表,如果您不想缓存任何内容。如果我没有 select 这个选项,我个人在我的应用程序中遇到了问题。
对于源请求策略,请执行以下操作 -
创建一个新策略,例如 'Origin-Policy-For-Cloudfront' 和 select 'CloudFront-Viewer-Address' 并检查其他选项还有。
看起来像这样 -
- 保存它,最后 Cloudfront 行为应该如下所示 -
现在,打开conf.d/node.conf或nginx.conf,随便你已经写好了你的'server -> /location',然后简单地写下-
server {
listen 80;
server_name my-server CLOUDFRONT_URL;
location / {
proxy_set_header X-Client-IP $http_CloudFront_Viewer_Address;
proxy_set_header Host $http_host;
proxy_pass "http://127.0.0.1:
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
在NodeJs Backend,你可以在请求中获取Client IP,如下所示-
exports.get = (req, res, next) => {
console.log('Clinet IP:', req.headers['x-client-ip']);
}
这是一种获取客户端 IP 的更简单方法,而不是摆弄 Cloudfront CIDR IP 范围和所有内容。
当 AWS EC2 中间有 Nginx 服务器时,如何在 NODE.JS 应用程序中从云端获取客户端 IP?
我的建议是使用提供的 CloudFront headers、link - [https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-cloudfront-headers.html]
您首先需要做的就是转到 Cloudfront -> Select Distribution -> Behaviors -> 然后在 'Cache key and origin requests'
中执行以下操作Select 'CachingDisabled' 对于 'Cache policy' 下拉列表,如果您不想缓存任何内容。如果我没有 select 这个选项,我个人在我的应用程序中遇到了问题。
对于源请求策略,请执行以下操作 -
创建一个新策略,例如 'Origin-Policy-For-Cloudfront' 和 select 'CloudFront-Viewer-Address' 并检查其他选项还有。
看起来像这样 -
- 保存它,最后 Cloudfront 行为应该如下所示 -
现在,打开conf.d/node.conf或nginx.conf,随便你已经写好了你的'server -> /location',然后简单地写下-
server { listen 80; server_name my-server CLOUDFRONT_URL; location / { proxy_set_header X-Client-IP $http_CloudFront_Viewer_Address; proxy_set_header Host $http_host; proxy_pass "http://127.0.0.1: proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; } }
在NodeJs Backend,你可以在请求中获取Client IP,如下所示-
exports.get = (req, res, next) => { console.log('Clinet IP:', req.headers['x-client-ip']); }
这是一种获取客户端 IP 的更简单方法,而不是摆弄 Cloudfront CIDR IP 范围和所有内容。