403禁止使用没有SSL的AWS Beanstalk Flask静态文件

mrc*_*- - 6 python amazon-web-services http-status-code-403 flask amazon-elastic-beanstalk

我的本地机器是一个虚拟的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
Run Code Online (Sandbox Code Playgroud)

我使用EB CLI部署它从/ myApp部署到名为myApp的Beanstalk应用程序,并使用名为myApp-env的环境.

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

option_settings:
   "aws:elasticbeanstalk:container:python:staticfiles":
     "/static/": "flaskApp/static/"
Run Code Online (Sandbox Code Playgroud)

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

StaticFiles: /static/=flaskApp/static/ 
Run Code Online (Sandbox Code Playgroud)

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

因此,当我打开我的应用程序的网页时,我看到页面缺少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]
...
Run Code Online (Sandbox Code Playgroud)

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

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

小智 0

如果所有用户都无法查看文件,那么 root 的所有者/组可能无关紧要。chmod 664通过对所有静态文件运行 a 来确保所有人都可以访问它们。