我有一个使用以下nginx配置运行gunicorn -w 1 -b 0.0.0.0:8000 flaskapp:app
的烧瓶应用。但是,如何判断nginx是否实际提供静态文件呢?我尝试将alias /home/pi/Public/flaskapp/static/;
更改为.../static-testing/;
,只是在其中放置了一个占位符style.css
,但该页面似乎像以前一样加载。
server {
listen 5000;
server_name _;
location / {
proxy_pass http://127.0.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /static {
alias /home/pi/Public/flaskapp/static/;
}
}
我错过了一些明显的东西吗?是否必须在烧瓶路线中指明一些内容?
答案 0 :(得分:2)
所以我最终正确配置了nginx。我添加了root并删除了静态的硬路径,还添加了日志文件,清楚地显示静态和css正在从nginx加载!我还将监听端口改为80(惊讶)。
server {
listen 80;
server_name myapp.com;
root /home/pi/Public/myapp;
access_log /home/pi/Public/myapp/logs/nginx-access.log;
error_log /home/pi/Public/myapp/logs/nginx-error.log;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /static/ { }
location /uploads/ { }
}
答案 1 :(得分:1)
您可以使用/ static / location中提到的空路径来测试它。
server {
listen 5000;
server_name _;
location /static/ {
}
location / {
proxy_pass http://127.0.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
这将给出404错误,因此您可以验证文件是否由Nginx提供。
答案 2 :(得分:0)
您可以将自定义标题添加到您的nginx位置块,看看它是否已在您的静态文件中设置。
答案 3 :(得分:0)
我认为最简单的方法是将一些上游变量记录到访问日志中。
http://nginx.org/en/docs/http/ngx_http_upstream_module.html#variables
你应该将它添加到http块中的nginx conf
upstream backend {
server 127.0.0.0.1:8000;
}
然后将proxy_pass更改为http://backend;
现在添加
log_format upstream '$upstream_bytes_received $upstream_response_time';
access_log /var/log/nginx-upstream upstream;
到您的服务器块并重新启动nginx。 当nginx没有请求上游时,你会看到' - '。
Doc:http://nginx.org/en/docs/http/ngx_http_log_module.html& http://nginx.org/en/docs/http/ngx_http_upstream_module.html