在Nginx中从Cloudfront获取ClientIp,而不使用Cloudfront CIDR IPS

sr4lhrrt  于 2023-08-03  发布在  Nginx
关注(0)|答案(1)|浏览(178)

如何从NODE.JS应用程序中的cloudfront获取Client-IP,当AWS EC2之间有Nginx服务器时?

unhi4e5o

unhi4e5o1#

我的建议是使用CloudFront提供的头文件,链接- [https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-cloudfront-headers.html]
1.你需要做的第一件事就是进入Cloudfront ->选择Distribution -> Behaviors ->然后在'Cache key and origin requests'中执行以下操作
1.如果您不希望任何内容被缓存,请在“缓存策略”下拉列表中选择“CachingDisabled”。如果我没有选择这个选项,我个人在我的应用程序中遇到了问题。
1.对于原始请求策略,请执行以下操作-
新建一条策略,如**'Origin-Policy-For-Cloudfront',选择'CloudFront-Viewer-Address'**,并 checkout 其他选项。
它看起来像这样-
x1c 0d1x的数据
1.保存它,最后Cloudfront行为应该如下所示-



1.现在,打开conf.d/node.confnginx.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;
    }
}

字符串
1.在NodeJs Backend上,您可以按如下方式获取请求中的客户端IP-

exports.get = (req, res, next) => {
     console.log('Client IP:', req.headers['x-client-ip']);
 }


这是一种更容易获得客户端IP的方法,而不是在Cloudfront CIDR IP范围和所有其他方面乱搞。

相关问题