Elastic Beanstalk上Wordpress部署的多个问题

问题描述 投票:0回答:3

我开始使用AWS部署,主要是出于必要,在Elastic Beanstalk,Elastic Filesystem,Amazon RDS(MariaDB)和Route 53 plus证书上安装Wordpress。我跟着一对夫妇开始并把所有东西放在一起,到目前为止我做得很好,但现在我面临着一些问题。

  1. 在设置Route 53和证书之后,我想强制使用HTTPS,所以我做了我以前在WP安装上做的事情:安装Really Simple SSL。到目前为止,它进展顺利。然后我通过EB CLI部署了一些更改,然后我进行了重定向循环地狱,迫使我删除该插件。我尝试了几次,结果相同。
  2. 我发现重新部署Wordpress会重置一些应该保存在数据库中的配置。到目前为止,我注意到在部署新版本的应用程序后,会重置永久链接,语言和其他次要设置。也许这会导致我提到的重定向循环。

寻找解决方案,我遇到了我实施的this answer,但我不知道它是否真的有效。

我能做什么?

更新

我尝试了this answer提出的解决方案无济于事,问题得到了重复。进一步搜索让我到find someone with exactly the same issue as mine

从这里我认为可能真正简单的SSL是罪魁祸首,并开始寻找替代品而不使用插件。所以我登陆this AWS Developer Forums thread,其中有些事情很顺利,因为我设法将主页和WP管理员重定向到HTTPS。但该网站的其余部分没有。

wordpress amazon-web-services redirect url-rewriting elastic-beanstalk
3个回答
1
投票

以下内容多次适用于我。这假设您拥有AWS Certificate Manager的SSL证书。

1. Configure your certificate

使用以下内容在secure-listener.config目录中创建文件.ebextensions

option_settings:
    aws:elb:listener:443:
        SSLCertificateId: replace:with:your:arn
        ListenerProtocol: HTTPS
        InstancePort: '80'

将Qazxswpoi文本替换为您的证书的ARN。以上内容告诉Elastic Beanstalk将您的SSL证书与端口443上的请求一起使用,并将这些请求转发到EC2实例上的端口80。

2. Set up redirects and environment variables

使用以下内容在replace:with:your:arn目录中创建文件ssl-rewrite.config

.ebextensions

files: "/etc/httpd/conf.d/ssl_rewrite.conf": mode: "000444" owner: root group: root content: | RewriteEngine On <If "-n '%{HTTP:X-Forwarded-Proto}' && %{HTTP:X-Forwarded-Proto} != 'https'"> RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L=301] </If> SetEnvIfNoCase X-FORWARDED-PROTO "^https$" HTTPS=on 子句检查由Elastic Beanstalk设置的<If></If>头是否等于https。如果不是,则将请求重定向到https。如果原始请求超过https,则X-Forwarded-Proto语句会创建一个SetEnvIfNoCase环境变量。 WordPress需要此环境变量设置为正确行为。

3. Update your WordPress configuration

假设您的网站是HTTPS,请将以下内容添加到您的www.example.com文件中:

wp-config.php

此回复基于define('WP_HOME', 'https://www.example.com'); define('WP_SITEURL', 'https://www.example.com'); ,这可能有助于获得更多细节。


0
投票

尝试在wp-config.php中设置RELOCATE

this tutorial

来自define('RELOCATE',true);

注意:当RELOCATE标志设置为true时,站点URL将自动更新为您用于访问登录屏幕的任何路径。这将使管理部分在新URL上运行并运行,但它不会更正设置的任何其他部分。您仍然需要手动更改。

另请检查以下表格的一致性:

Changing the Site URL

0
投票

如果您使用负载均衡器(ELB),我没有从您的评论中获得。但即便如此,Really-simple-ssl也应该检测出来。

永久链接的问题可归因于您实际上忽略了本地.htaccess文件,或者它与服务器上的文件不同。确保在更新时包含它。更新时,您的数据库未重置或更改。请注意,使用EB CLI进行部署时,它基本上会拍摄本地版本的快照,将其拉上并上传到新的应用程序版本,因此它会完全忽略服务器上以前版本中的任何内容。

select * from options where option_name = 'siteurl';
select * from options where option_name = 'home';
select domain from site;
select * from sitemeta;
select * from blogs;
select * from  sitemeta where meta_key = 'siteurl';

尝试将所有重要的环境值保留在EBS中,取一个# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>。我还在这些ENV变量中包含了WP_HOME和WP_SITEURL,因此可以轻松调整它们。如果您无法通过Phpmyadmin或类似软件更新数据库,请在functions.php中使用以下内容以更新为HTTPS!

在任何情况下,你需要这个插件到你的wp-config.php

update_option( 'siteurl', 'https://example.com' );
update_option( 'home', 'https://example.com' );

我建议使用这个if (($_SERVER['HTTP_CLOUDFRONT_FORWARDED_PROTO'] == 'https') OR ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) {$_SERVER['HTTPS']='on';}来安装EBS,如果你还没有...

如果您之前尝试过这些事情,请告诉我,我还有其他一些技巧。另请注意,我假设您在各处使用正确的安全组设置!

干杯!

© www.soinside.com 2019 - 2024. All rights reserved.