gpt4 book ai didi

python - 403 forbidden for AWS Beanstalk Flask static files without SSL

转载 作者:太空狗 更新时间:2023-10-30 00:16:50 25 4
gpt4 key购买 nike

我的本​​地机器是一个虚拟的 CeontOS-7,带有一个包含 Flask 应用程序目录的 Python 2.7 virtualenv,结构如下:

/var
/www
/myAppenv
/myApp
/.ebextensions
myApp-env.config
/.elasticbeanstalk
application.py
requirements.txt
/flaskApp
/core
views.py
models.py
forms.py
/templates
/static

然后我使用 EB CLI deploy 从/myApp 将它部署到一个名为 myApp 的 Beanstalk 应用程序,环境名为 myApp-env。

我认为静态文件路径设置在/.ebextensions/myApp-env.config 中:

option_settings:
"aws:elasticbeanstalk:container:python:staticfiles":
"/static/": "flaskApp/static/"

我可以在 AWS web console-> environment-> Configurations-> Software Configuration 中看到

StaticFiles: /static/=flaskApp/static/ 

所以路径设置似乎不是问题的原因。

因此,当我打开我的应用程序的网页时,我看到该页面缺少 css 和 js,因为静态目录中的所有内容都会收到 403 禁止响应:

GET http://myApp-dev.elasticbeanstalk.com/ [HTTP/1.1 200 OK 174ms]
GET http://myApp-dev.elasticbeanstalk.com/static/bootstrap-3.3.5-dist/js/bootstrap.min.js [HTTP/1.1 403 Forbidden 55ms]
...

我猜这与权限有关,因为在我的本地目录中,文件归我的 linux 帐户所有(出于 samba 的原因),然后我尝试 chown root 和 chgrp root(静态目录和文件权限为 755),但它没有不要改变任何东西。事实上,我认为与防火墙/selinux 没有任何关系,因为主页实际上正在加载。

有人知道如何解决这个问题吗?

最佳答案

我想我找到了问题所在。我正在通过 EB SSH 检查以了解发生了什么,我注意到我登录 AWS 机器的“ec2-user”可以访问(运行 cd 命令)直到目录

/opt/python/current/app

但 ec2-user 不允许访问目录

/opt/python/current/app/flaskApp

因为权限。

虽然 flaskApp 中包含的静态目录和文件的权限设置为 755,但我注意到 flaskApp 目录(包含静态目录)是 744(我认为这没问题)。所以我将 flaskApp 目录权限更改为 755 并且它起作用了:现在加载了静态文件!

顺便说一句,我怀疑这个权限集是否适合生产。另一种方法是构建 dirs,使 static 不是 flaskApp dir 的子目录,允许这种方式将 static dir 设置为 755,同时将 flaskApp dir 设置为更保守的权限。

关于python - 403 forbidden for AWS Beanstalk Flask static files without SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34475835/

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