Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么nginx在错误的目录下提供静态文件?_Nginx - Fatal编程技术网

为什么nginx在错误的目录下提供静态文件?

为什么nginx在错误的目录下提供静态文件?,nginx,Nginx,我试图让nginx从根url提供一个静态文件,例如http://localhost/favicon.ico。我的静态资产位于/home/myuser/myapp/static/中,我有一个根/home/myuser/myapp/static/指令 在我的浏览器中访问/favicon.ico不返回任何内容,但访问/static/favicon.ico时文件已正确送达 这意味着nginx将/home/myuser/myapp/视为根,而不是/home/myuser/myapp/static/,对吗?

我试图让nginx从根url提供一个静态文件,例如
http://localhost/favicon.ico
。我的静态资产位于
/home/myuser/myapp/static/
中,我有一个
根/home/myuser/myapp/static/服务器
部分中的code>指令

在我的浏览器中访问
/favicon.ico
不返回任何内容,但访问
/static/favicon.ico
时文件已正确送达

这意味着nginx将
/home/myuser/myapp/
视为根,而不是
/home/myuser/myapp/static/
,对吗?对
/favicon.ico
的请求不应该从静态目录中发出吗

这是我的nginx.conf:

worker_processes 1;
error_log  /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;

events {
  worker_connections 1024; # increase if you have lots of clients
  accept_mutex off; # set to 'on' if nginx worker_processes > 1
  use epoll;
}

http {
  include mime.types;
  access_log /var/log/nginx/access.log combined;
  sendfile on;

  upstream app_server {
    server unix:/sockets/gunicorn.sock fail_timeout=0;
  }

  server {
    listen 80 deferred;
    client_max_body_size 4G;
    server_name 10.204.2.169 perf-test.debesys.net;
    keepalive_timeout 5;
    root /home/myuser/myapp/static;

    location / {
      try_files $uri @app;
    }

    location @app{
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header Host $http_host;
      proxy_redirect off;
      proxy_pass http://app_server;
    }
  }
}
这是
/home/myuser/myapp
的结构:

├── constants.py
├── __init__.py
├── main.py
├── setup.sh
├── static
│   └── favicon.ico
├── tasks.py
└── wsgi.py

您应该将根移动到位置部分

  server {
    listen 80 deferred;
    client_max_body_size 4G;
    server_name 10.204.2.169 perf-test.debesys.net;
    keepalive_timeout 5;

    location / {
      try_files $uri @app;
      root /home/myuser/myapp/static;
    }

将根放在位置块中从来都不是一个好主意。虽然它可以工作,但它是多余的。