如何使用Nginx提供Flask静态文件?

2g32fytz  于 8个月前  发布在  Nginx
关注(0)|答案(2)|浏览(95)

我有一个这样结构的Web应用程序:

|
|__ static
   |__style.less
   |__images
|__ myapp.py
|__ wsgi.py

我已经设法使用nginx和wsgi运行Web应用程序,但问题是静态文件没有提供,我的意思是,当我去他们的URL时,服务器找不到他们。我是404。
下面是我的nginx配置文件部分:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /var/www/public_html;
    index index.php index.html index.htm;

    server_name xxxxxxx.com;

    location / {
        try_files $uri $uri/ =404;
    }

    location /myapp {
        include uwsgi_params;
        uwsgi_pass unix:/var/www/public_html/myapp/myapp.sock;
}

是不是少了什么?

tv6aics1

tv6aics11#

将此添加到您的nginx配置中

location ^~ /static/  {
    include  /etc/nginx/mime.types;
    root /project_path/;
}

/project_path/替换为app的绝对路径,需要注意的是,它不包含静态目录/project_path/static/内部的所有内容都将在url /static/中serverd。

vi4fp9gy

vi4fp9gy2#

How to Configure NGINX for a Flask Web Application
我发现这个解决方案更好:

location /static/  {
    alias /<path to project>/static;
}

当然,将<path to project>替换为项目的目录。
请注意,在此解决方案中,static包含在路径中!这对安全性真的很有好处!降低了意外提供应用程序源文件的风险。默认情况下,flask将源文件放在<path to project>中,配置中的一个小错误可能会使这些源文件对攻击者可见。

  • 更新:location的路径必须以/结束。

相关问题