Chi*_*Fur 12 https wordpress amazon-web-services amazon-elb
我已将 AWS ELB 配置为指向运行 Wordpress 3.2.1 的 Ubuntu 服务器。一切都在服务器上运行良好,直到我把它放在负载平衡器后面。
我将负载均衡器设置为将端口 80 转发到端口 80,将端口 443 转发到端口 80。
我设置了我的虚拟主机文件来检查来自 elb 的标头:
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule !/status https://% {SERVER_NAME}%{REQUEST_URI} [L,R]
现在,每当我访问 https 网址时,都会收到以下消息:
此网页有重定向循环https://mywebsite.com/securepage/上
的网页导致重定向次数过多
一旦我禁用 wordpress https 插件
( http://wordpress.org/extend/plugins/wordpress-https/ )
页面就可以工作,但现在充满了混合内容。应该是 https 的页面不再是 https。
一旦我直接访问服务器而不是通过 elb,它就会再次工作。
关于如何让它与 AWS ELB 一起工作的任何想法?
A.B*_*oll 22
尝试将此添加到您的httpd.conf
或.htaccess
SetEnvIfNoCase X-FORWARDED-PROTO "^https$" HTTPS
Run Code Online (Sandbox Code Playgroud)
使用负载均衡器 + HTTPS 时,您的网络服务器不知道前端正在使用 HTTPS,因此不断尝试重定向到 HTTPS 站点,而实际上 HTTPS 已被使用。
上面的代码会将 Amazon 的负载均衡器发送的标头 ( X-Forwarded-Proto: https
) 转换为 Wordpress 和其他 PHP 脚本可以理解的环境变量 ( HTTPS=1
)
Jer*_*use 13
如果没有您发布 ELB 配置,我会冒险猜测 ELB 正在将 HTTPS (443/tcp) 流量重定向到 HTTP (80/tcp) 上的 EC2 实例。然后你.htaccess
和插件试图将它重定向回 HTTPS,因为它是通过 HTTP 看到的。
去看看你的 EC2 控制台Network & Security > Load Balancers
,我想你会看到Port Configuration
类似的东西443 forwarding to 80 (HTTPS, Certificate: blah)
小智 5
根据亚马逊这里https://d0.awsstatic.com/whitepapers/deploying-wordpress-with-aws-elastic-beanstalk.pdf修复是:
/** Detect if SSL is used. This is required since we are terminating SSL either on CloudFront or on ELB */
if (($_SERVER['HTTP_CLOUDFRONT_FORWARDED_PROTO'] == 'https') OR ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'))
{$_SERVER['HTTPS']='on';}
Run Code Online (Sandbox Code Playgroud)
我仍然以无限循环结束,所以我将我的 WordPress 配置更改为:
define('WP_HOME','http://www.example.com');
define('WP_SITEURL','http://www.example.com');
Run Code Online (Sandbox Code Playgroud)
到:
define('WP_HOME','https://www.example.com');
define('WP_SITEURL','https://www.example.com');
Run Code Online (Sandbox Code Playgroud)
这将强制用户使用 https,即使他们输入 http,而且它可以轻松地离线开发站点,因为您只需将 WP_HOME 更新为本地主机,而 https 不再是默认设置
归档时间: |
|
查看次数: |
31129 次 |
最近记录: |