Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to serve Flask static files using Nginx?

Tags:

I've a web application with this structure:

| |__ 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.

Here's my nginx configuration file part:

 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?

like image 928
Madno Avatar asked Jul 28 '15 16:07

Madno


People also ask

Can nginx be used for serving static content?

Configure NGINX and NGINX Plus to serve static content, with type-specific root directories, checks for file existence, and performance optimizations.

Can Flask serve static files?

Flask automatically creates a static view that serves static files from a folder named static in your application's directory. You can also use the url_for() method to allow for more dynamic URLs. Its use reduces the amount of modification needed in the code if something needs to change in your URL references.

How do I access static files in Flask?

Flask – Static Files Usually, the web server is configured to serve them for you, but during the development, these files are served from static folder in your package or next to your module and it will be available at /static on the application. A special endpoint 'static' is used to generate URL for static files.


1 Answers

Add this to your nginx configuration

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/.

like image 190
Vivek R Avatar answered Sep 23 '22 13:09

Vivek R