AWS EC2 EB 上的 .htaccess 在哪里
Posted
技术标签:
【中文标题】AWS EC2 EB 上的 .htaccess 在哪里【英文标题】:Where is .htaccess on AWS EC2 EB 【发布时间】:2017-11-14 00:50:45 【问题描述】:我有一个运行 Elastic Beanstalk 的 EC2 实例。我想启用 GZIP 压缩,我知道我需要修改我的 .htaccess
文件。
我读到.htaccess
文件位于我的应用安装根文件夹中。但是,我似乎找不到它。 (我很新手,不知道根文件夹在哪里)。
我能够通过一个 Java 8 应用 ssh 到运行 Apache Tomcat 8 的服务器上。
问题
.htaccess
在哪里?
这就是我的根目录:
$ ls
bin cgroup etc lib local media opt root sbin srv tmp var
boot dev home lib64 lost+found mnt proc run selinux sys usr
更新
我有一个 .ebextensions/tomcat-settings.config
现在可以了。它启用 GZip 压缩。
option_settings:
aws:elasticbeanstalk:environment:proxy:
GzipCompression: 'true'
ProxyServer: nginx
aws:elasticbeanstalk:environment:proxy:staticfiles:
/pub: public
这似乎并没有压缩.svg
文件。所以如果可能的话,我想有以下,但不知道在哪里添加它:
## EXPIRES CACHING ##
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType image/svg "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType text/html "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 month"
</IfModule>
## EXPIRES CACHING ##
【问题讨论】:
我不熟悉 beanstalk 但尝试将 -a 开关添加到 ls 因为 .htaccess 是一个隐藏文件。 ls -a 允许您查看所有文件,包括隐藏文件。 【参考方案1】:您需要上传 .htaccess 文件或将其放在您上传应用程序的根文件夹中的 ec2 实例中,如果您使用的是 elastick beanstalk,则需要将 .htaccess 文件添加到根目录下的 .zip 文件中文件夹
【讨论】:
您好 Brayan,感谢您的建议。我将.htaccess
添加到src/main/webapp
的根目录中。这意味着当我执行mvn install
时,它会构建到我的war
文件的根目录。然后部署到 Tomcat 服务器。但是当我测试页面时,它没有被压缩。当我ssh
进入服务器时,我在./tmp/deployment/application/ROOT/.htaccess
找到它。 (我将以下内容添加到我的.htaccess
文件中:clayharmon.com/words/posts/enabling-gzip-compression-on-ec2)。你知道为什么它不压缩页面吗?
我遵循了以下建议,它对我有用。 (将tomcat-settings.config
文件添加到webapp
根目录)docs.aws.amazon.com/elasticbeanstalk/latest/dg/…【参考方案2】:
您如何通过 ssh 或 .ebextensions 文件配置 ec2 实例? 如果您通过 ssh 配置实例并且您使用的是弹性环境,那么当实例降级或更改时配置将被删除,如果您仅通过 ec2 使用一个实例,则配置继续工作。
如果你需要通过 .ebextensions 配置它,你需要在你的 .zip 文件中创建一个名为 .ebextensions 的文件夹,在这个文件夹中你需要创建两个名为 enable_mod_deflate.conf 和 myapp.config 的文件。
enable_mod_deflate.conf 的内容:
# mod_deflate configuration
<IfModule mod_deflate.c>
# Restrict compression to these MIME types
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xml+rss
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE image/png
AddOutputFilterByType DEFLATE image/gif
AddOutputFilterByType DEFLATE image/jpeg
# Level of compression (Highest 9 - Lowest 1)
DeflateCompressionLevel 9
# Netscape 4.x has some problems.
BrowserMatch ^Mozilla/4 gzip-only-text/html
# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip
# MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
<IfModule mod_headers.c>
# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
</IfModule>
</IfModule>
myapp.config 的内容:
container_commands:
01_setup_apache:
command: "cp .ebextensions/enable_mod_deflate.conf /etc/httpd/conf.d/enable_mod_deflate.conf"
那你需要重启服务器。
【讨论】:
您好 Brayan,感谢您的全面回答。我已经有一个.ebextensions/tomcat-settings.config
文件,它可以成功地进行 GZip 压缩(参见上面的更新)。因此,我按照您上面的建议添加了enable_mod_deflate.conf
和myapp.config
。但是,当我在我的网站 (www.thewhozoo.com) 上运行 Google PageSpeed Insights 时,我没有得到任何改进。以上是关于AWS EC2 EB 上的 .htaccess 在哪里的主要内容,如果未能解决你的问题,请参考以下文章
针对 AWS Elastic Search HTTP 请求在 EB 上对 EC2 进行身份验证
AWS:使用 Elastic Beanstalk 命令行界面 (EB CLI) 3.x SSH 到 EC2