如何使用 Nginx 服务 Flask 静态文件?
How to serve Flask static files using Nginx?
我有一个具有这种结构的 Web 应用程序:
|
|__ static
|__style.less
|__images
|__ myapp.py
|__ wsgi.py
我已经设法 运行 使用 nginx 和 wsgi 的网络应用程序,但问题是静态文件没有提供,我的意思是,当我去他们的服务器时找不到它们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;
}
是不是少了什么?
将此添加到您的 nginx 配置中
location ^~ /static/ {
include /etc/nginx/mime.types;
root /project_path/;
}
将 /project_path/
替换为您的 应用程序的绝对路径 ,您应该注意它 不包括静态目录 和所有/project_path/static/
中的内容将在 url /static/
.
中服务器
来自How to Configure NGINX for a Flask Web Application
我发现这个解决方案更好:
location /static {
alias /<path to project>/static;
}
当然,将 <path to project>
替换为您的项目目录。
请注意,在此解决方案中,static
包含在路径中!这对安全性真的很好!意外提供应用程序源文件的风险降低了。默认情况下,flask 将源文件放在 <path to project>
中,配置中的一个小错误可能会使这些源文件对攻击者可见。
我有一个具有这种结构的 Web 应用程序:
|
|__ static
|__style.less
|__images
|__ myapp.py
|__ wsgi.py
我已经设法 运行 使用 nginx 和 wsgi 的网络应用程序,但问题是静态文件没有提供,我的意思是,当我去他们的服务器时找不到它们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;
}
是不是少了什么?
将此添加到您的 nginx 配置中
location ^~ /static/ {
include /etc/nginx/mime.types;
root /project_path/;
}
将 /project_path/
替换为您的 应用程序的绝对路径 ,您应该注意它 不包括静态目录 和所有/project_path/static/
中的内容将在 url /static/
.
来自How to Configure NGINX for a Flask Web Application
我发现这个解决方案更好:
location /static {
alias /<path to project>/static;
}
当然,将 <path to project>
替换为您的项目目录。
请注意,在此解决方案中,static
包含在路径中!这对安全性真的很好!意外提供应用程序源文件的风险降低了。默认情况下,flask 将源文件放在 <path to project>
中,配置中的一个小错误可能会使这些源文件对攻击者可见。