如何使用Nginx服务Flask静态文件?

时间:2022-08-10 16:54:42

I've a web application with this structure:

我有一个具有这种结构的web应用程序:

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

I've managed to run the web application using nginx and wsgi, but the problem is that the static files are not served, i mean, the server can't find them when i go to their URL. It gives me 404.

我已经使用nginx和wsgi运行了web应用程序,但问题是静态文件没有服务,我的意思是,当我访问它们的URL时,服务器无法找到它们。它给了我404。

Here's my nginx configuration file part:

下面是我的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;
}

Is there something missing?

是缺少了什么?

1 个解决方案

#1


16  

Add this to your nginx configuration

将它添加到nginx配置中

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

replace /project_path/ with your app's absolute path, you should note that it doesn't include static directory and all the contents inside /project_path/static/ will be serverd in url /static/.

将/project_path/替换为您的应用程序的绝对路径,您应该注意它不包含静态目录,并且/project_path/static/中所有的内容在url /static/中都是serverd。

#1


16  

Add this to your nginx configuration

将它添加到nginx配置中

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

replace /project_path/ with your app's absolute path, you should note that it doesn't include static directory and all the contents inside /project_path/static/ will be serverd in url /static/.

将/project_path/替换为您的应用程序的绝对路径,您应该注意它不包含静态目录,并且/project_path/static/中所有的内容在url /static/中都是serverd。