【发布时间】:2017-05-30 19:50:04
【问题描述】:
简单/小问题。
我的 Amazon AWS ELB 向我发送以下标头。
x-forwarded-for 84.134.167.231, 172.31.17.157
x-forwarded-host app.example.org
x-forwarded-port 443
x-forwarded-proto https
x-forwarded-server ip-172-31-11-2.eu-central-1.compute.internal
但是请求使用的是第二个,本地机器ip地址。 - 172.31.17.157
有人知道如何解决这个问题吗? 是否可以覆盖 Symfony 的 Get IP 功能?
提前致谢!
//编辑 1 - HTTPs 配置
files:
/etc/httpd/conf.d/ssl.conf:
mode: "000644"
owner: root
group: root
content: |
LoadModule ssl_module modules/mod_ssl.so
Listen 443
<VirtualHost *:443>
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
SSLEngine on
SSLCertificateFile "/etc/pki/tls/certs/server.crt"
SSLCertificateKeyFile "/etc/pki/tls/certs/server.key"
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
SSLSessionTickets Off
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
ProxyPass / http://localhost:80/ retry=0
ProxyPassReverse / http://localhost:80/
ProxyPreserveHost on
RequestHeader set X-Forwarded-Proto "https" early
</VirtualHost>
【问题讨论】:
-
我想你会发现 ELB 确实没有“发送”给你这个,而是你的网络服务器添加 172.31.17.157,它是 ELB 节点的 IP,到
X-Forwarded-For,是 ELB 发送给您的 (84.134.167.231)。这将是您的 Web 服务器配置的问题。 -
@Michael-sqlbot 我已将我的 Web 服务器配置添加到 https 部分。 HTTP 有一个代理。也许这个代理添加了这个标头?那怎么解决这个问题呢?谢谢;-)
-
它不会出现在与 SSL 相关的配置的这一部分中。我不熟悉 Symphony,但看起来 this 告诉您,如果您配置类似
trusted_proxies: [172.31.0.0/16]的内容,那么X-Forwarded-For末尾的额外地址将被忽略。根据您在问题中显示的内容,172.31.0.0/16是我认为是您的 VPC 的 CIDR 超网。
标签: php symfony amazon-web-services amazon-elb x-forwarded-for