Elastic Beanstalk - 升级后替换 .htaccess 为 nginx
Posted
技术标签:
【中文标题】Elastic Beanstalk - 升级后替换 .htaccess 为 nginx【英文标题】:Elastic Beanstalk - replace .htaccess for nginx after upgrade 【发布时间】:2021-08-07 11:26:26 【问题描述】:我将我的 php Elastic Beanstalk 实例从 Amazon Linux 2/3.2.1 升级到 Amazon Linux/2.9.17
在以前的版本中,我的包中有一个 .htaccess 文件,以便删除 URL 中的文件扩展名,如下所示:
www.example.com/page.php?var=123
变为 www.example.com/page?var=123
升级后,www.example.com/page.php?var=123
工作正常,但www.example.com/page?var=123
不工作。结果,我的应用中的导航被破坏了。
我从other stack overflow questions 了解到,随着这次 Elastic Beanstalk 平台的升级,Apache 被 nginx 取代,这就是不再考虑 .htaccess 的原因。
我对 nginx 的了解为零,所以我尝试在网上研究如何在 nginx 上应用相同的行为。但是我所做的没有工作。看看下面我做了什么:
我在 .ebextensions\nginx\conf.d\myconf.conf 中创建了一个新的配置文件
这是文件的内容:
server
location /
try_files $uri $uri.html $uri/ @extensionless-php;
index index.html index.htm index.php;
location ~ \.php$
try_files $uri =404;
location @extensionless-php
rewrite ^(.*)$ $1.php last;
我是否只应用了文件中所需的部分配置内容?
【问题讨论】:
你试过用apache吗? PHP paltform 仍然支持 apache,但它不是默认选项。您必须启用它,如docs 所示。 @Marcin 是的,它适用于 Apache,谢谢。我认为最好遵循亚马逊的方法来获得长期支持。但现在这个选项很好。 没问题。如果您不介意,我会提供答案。 【参考方案1】:基于 cmets。
Amazon Linux 2 EB 平台默认使用 nginx。但是,Tomcat、Node.js、PHP 和 Python 执行 also support Apache。由于此选项不是默认选项,因此您必须在 .ebextentions
中启用它:
option_settings:
aws:elasticbeanstalk:environment:proxy:
ProxyServer: apache
【讨论】:
我没有将此答案标记为已接受,因为它没有为原始问题提供解决方案,但它是一个很好的解决方法以上是关于Elastic Beanstalk - 升级后替换 .htaccess 为 nginx的主要内容,如果未能解决你的问题,请参考以下文章
替换 AWS Elastic BeanStalk 上的特定实例?
升级 Ruby on Python Elastic Beanstalk 实例