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

标签 python amazon-web-services flask amazon-elastic-beanstalk http-status-code-403

我的本​​地机器是一个虚拟的 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/

相关文章:

Flask CSP ( Content-Security-Policy ) 针对跨站脚本等攻击的最佳实践

python - 为 json 创建一个可以显式清除的缓存

javascript - 将音频数据从 JS 发送到 Python

python - Python 中的 "Private"属性属性

python - 使用 elasticbeanstalk 部署 Flask 时出现 AWS mod_wsgi 错误

python - 使用汇总操作时出现属性错误

amazon-web-services - 在创建 AMI 时启动实例

postgresql - 尝试使用 Postgresql 连接到 Amazon RDS 时出错

jquery - 使用 django-autocomplete-light 自动完成

python - 计算数据帧切片的统计信息