gpt4 book ai didi

amazon-web-services - 在 Elastic Beanstalk Linux Tomcat 8 上将 http 重定向到 https

转载 作者:太空宇宙 更新时间:2023-11-03 13:00:33 25 4
gpt4 key购买 nike

在过去的几天里,我一直在尝试强制我的应用程序将对我域的非 https 调用转发到 https 调用。

我有一个使用 64 位 Amazon Linux 2016.03 v2.2.0 配置的 Web 服务器弹性 beanstalk,运行 Tomcat 8 Java 8。我在我的应用程序中创建了一个名为 .ebextensions 的文件夹,其中包含一个名为 ssl_rewrite.config 的文件。该文件包含以下内容:

files:
"/etc/httpd/conf.d/ssl_rewrite.conf":
mode: "000644"
owner: root
group: root
content: |
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule !/status https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

它曾经包含这个,taken from this example ,但我收到 if 语句的错误:

files:
"/etc/httpd/conf.d/ssl_rewrite.conf":
mode: "000644"
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]
</If>

无论如何,当我尝试部署我的应用程序时它失败了并且我收到了这个错误:

Application update failed at 2016-10-17T01:33:00Z with exit status 1 and error: Hook /opt/elasticbeanstalk/hooks/appdeploy/pre/03_configure_proxy.sh failed.

Executing: /opt/elasticbeanstalk/bin/log-conf -n httpd -l'/var/log/httpd/*'

Executing: /usr/sbin/apachectl -t -f /var/elasticbeanstalk/staging/httpd/conf/httpd.conf
Syntax error on line 1 of /etc/httpd/conf.d/ssl_rewrite.conf:
Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration
Failed to execute '/usr/sbin/apachectl -t -f /var/elasticbeanstalk/staging/httpd/conf/httpd.conf'
Failed to execute '/usr/sbin/apachectl -t -f /var/elasticbeanstalk/staging/httpd/conf/httpd.conf'.

我已经进入 httpd.conf 文件并添加了以下行:

LoadModule rewrite_module modules/mod_rewrite.so

关于我做错了什么的任何提示或想法?谢谢!

最佳答案

对于那些挣扎了一段时间的人,我找到了一个 GitHub(来自 AWS 团队),其中包含所有 AWS 配置,下面的示例适用于 Apache 2.2 的 HTTP>HTTPS 重定向。 (有关 Apache 2.4 和 Nginx 的配置,请参阅下面的链接)。

Apache 2.2

  1. 在您的应用程序的根目录中创建一个文件:YOUR_PROJECT_ROOT/.ebextensions/httpd/conf.d/elasticbeanstalk.conf(如果使用 IntelliJ/Java,请确保将其添加到最终的 .WAR 工件中)

  2. 添加以下行以在虚拟主机中启用重定向:

    <VirtualHost *:80>
    LoadModule rewrite_module modules/mod_rewrite.so
    RewriteEngine On
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteCond %{HTTP_USER_AGENT} !ELB-HealthChecker
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

    <Proxy *>
    Order deny,allow
    Allow from all
    </Proxy>

    ProxyPass / http://localhost:8080/ retry=0
    ProxyPassReverse / http://localhost:8080/
    ProxyPreserveHost on

    ErrorLog /var/log/httpd/elasticbeanstalk-error_log
    </VirtualHost>

有关 Apache 2.4 和 Nginx 的更多示例,请访问此 GitHub 存储库:

https://github.com/awsdocs/elastic-beanstalk-samples/tree/master/configuration-files/aws-provided/security-configuration/https-redirect/java-tomcat

此外,还有更多有用的配置和示例可用。

问候

关于amazon-web-services - 在 Elastic Beanstalk Linux Tomcat 8 上将 http 重定向到 https,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40096736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com