一.创建秘钥id和key
1.Identity and Access Management (IAM)
创建用户
选择编程访问
创建策略
用户和策略绑定
对标阿里云分配策略
最终目的获取
aws_access_key_id =
aws_secret_access_key =
二.配置策略
2.1 准备环境
yum -y install python-pip
pip install --upgrade pip
pip install --upgrade --user awscl
注意换成自己的id和key还有可用区
cat <<EOF > ~/.aws/credentials
[default]
aws_access_key_id = ****
aws_secret_access_key = ***
region = ****
EOF
2.2 使用命令配置
2.2.1 创建策略
aws elb create-load-balancer-policy --load-balancer-name elb名字 --policy-name EnableProxyProtocol --policy-type-name ProxyProtocolPolicyType --policy-attributes AttributeName=ProxyProtocol,AttributeValue=true
2.2.2 启用策略
aws elb set-load-balancer-policies-for-backend-server --load-balancer-name elb名字 --instance-port 443 --policy-names EnableProxyProtocol
aws elb set-load-balancer-policies-for-backend-server --load-balancer-name elb名字 --instance-port 80 --policy-names EnableProxyProtocol
2.2.3 查看策略是否生效
yum -y install jq
aws elb describe-load-balancers --load-balancer-name elb名字 | jq '.LoadBalancerDescriptions[].BackendServerDescriptions'
返回数据就表示启用成功
[
{
"InstancePort": 80,
"PolicyNames": [
"EnableProxyProtocol"
]
},
{
"InstancePort": 443,
"PolicyNames": [
"EnableProxyProtocol"
]
}
]
三.nginx配置
3.1 http配置
这里的ip地址是负载均衡内网ip段
set_real_ip_from 172.31.0.0/16;
real_ip_header proxy_protocol;
日志模块配置(nginx1.16.0默认就是这样的)
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
3.2 service配置
listen 80 proxy_protocol;
最后通过负载均衡访问到nginx,nginx就能获取到用户真实ip