![](/img/trans.png)
[英]Serve static files with flask on development and nginx on production
[英]How to serve Flask static files using Nginx?
我有一个具有这种结构的 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;
}
有什么遗漏吗?
将此添加到您的nginx配置
location ^~ /static/ {
include /etc/nginx/mime.types;
root /project_path/;
}
将/project_path/
替换为应用程序的绝对路径 ,您应注意,它不包括静态目录,并且/project_path/static/
所有内容都将存储在url /static/
。
我发现此解决方案更好:
location /static {
alias /<path to project>/static;
}
当然,用项目目录替换<path to project>
。
请注意,在此解决方案中,路径中包含static
! 这确实对安全性有好处! 减少了意外提供应用程序源文件的风险。 默认情况下,flask将源文件放在<path to project>
中,配置中的小错误可能会使攻击者可以看到这些源文件。
我有同样的问题,但不幸的是这些答案没有帮助。
我的树:
├── app.py
├── service
│ └── __init__.py
├── static
│ └── styles.css
├── templates
│ └── home.html
└── venv
├── bin
nginx配置文件:
server {
listen 80;
server_name ...;
location /static {
alias /home/root/d_testing/static;
}
location / {
proxy_pass http://localhost:8000;
include /etc/nginx/proxy_params;
proxy_redirect off;
}
}
我用 gunicorn 运行我的烧瓶应用程序:gunicorn -w 3 app:app
但它显示没有样式的文本。 怎么了?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.