Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.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
Node.js 静态文件在本地提供,但不通过nginx提供_Node.js_Ssl_Nginx_Lets Encrypt_Restify - Fatal编程技术网

Node.js 静态文件在本地提供,但不通过nginx提供

Node.js 静态文件在本地提供,但不通过nginx提供,node.js,ssl,nginx,lets-encrypt,restify,Node.js,Ssl,Nginx,Lets Encrypt,Restify,我在VPS上运行node.js API,由Ubuntu 13.04上的nginx提供服务 我使用和服务的静态文件如下: server.get( /\/static\/?.*/, restify.serveStatic({ directory: __dirname // => /home/misha/rxviz-api }) ); 以下是nginx config中的相关位: server { listen 80; server_name api.r

我在VPS上运行node.js API,由Ubuntu 13.04上的nginx提供服务

我使用和服务的静态文件如下:

server.get(
  /\/static\/?.*/,
  restify.serveStatic({
    directory: __dirname   // => /home/misha/rxviz-api
  })
);
以下是nginx config中的相关位:

server {
    listen 80;

    server_name api.rxviz.com;

    location / {
        proxy_pass http://localhost:4010/;
    }
}
(完整配置为)

运行时:

curl http://localhost:4010/static/.well-known/acme-challenge/test.json
在VPS上,我得到
test.json
的内容

但是,当导航到以下位置时:

http://api.rxviz.com/static/.well-known/acme-challenge/test.json
在浏览器中,我得到404

nginx错误日志显示未找到
/opt/nginx/html/static/.well-known/acme challenge/test.json

为什么nginx试图在
/opt/nginx/html
中访问
test.json,而不是
/home/misha/rxviz api

还有几点:

  • static
    目录权限为
    drwxrwxr-x
  • 我可以访问
    http://api.rxviz.com/
    在浏览器中成功打开

    • 我很难确定,因为我无法测试它,但是

      我认为您对nginx设置有问题:

      location /static/ {
              alias /home/misha/rxviz-api/static/;
      }
      
      /static追加到别名中,包括位置部分,因此它搜索
      /home/misha/rxviz api/static/static
      这将返回404,因为在
      static/

      尝试修复以下问题:

      location /static/ {
              alias /home/misha/rxviz-api/;
      }
      
      。。。。

      我也想提一提。 似乎您的节点服务器(使用restify)正在按照您的要求提供内容(127.0.0.1:4010/static/…如您所说), 但请注意,nginx无论如何都不会将任何/static调用重定向到您的节点中,因此您的节点restify是未使用的

      为什么?

      本节:

      location /static/ {
              alias /home/misha/rxviz-api/static/;
      }
      
      告诉nginx不要将这些/静态调用重定向到节点服务中,而是尝试从本地路径查找并提供文件


      所以如果你想使用restify。。。只需删除整个
      位置/静态部分,您的节点也将提供这些文件。

      我很难确定,因为我无法测试它,但是

      我认为您对nginx设置有问题:

      location /static/ {
              alias /home/misha/rxviz-api/static/;
      }
      
      /static追加到别名中,包括位置部分,因此它搜索
      /home/misha/rxviz api/static/static
      这将返回404,因为在
      static/

      尝试修复以下问题:

      location /static/ {
              alias /home/misha/rxviz-api/;
      }
      
      。。。。

      我也想提一提。 似乎您的节点服务器(使用restify)正在按照您的要求提供内容(127.0.0.1:4010/static/…如您所说), 但请注意,nginx无论如何都不会将任何/static调用重定向到您的节点中,因此您的节点restify是未使用的

      为什么?

      本节:

      location /static/ {
              alias /home/misha/rxviz-api/static/;
      }
      
      告诉nginx不要将这些/静态调用重定向到节点服务中,而是尝试从本地路径查找并提供文件


      所以如果你想使用restify。。。只需删除整个
      location/static
      部分,您的节点也将为这些文件提供服务。

      IFAIK,
      root
      正在追加,但
      alias
      没有追加。(我尝试了
      alias/home/misha/rxviz-api/;
      ,但仍然是404)。我还尝试从nginx配置中删除
      location/static/{…}
      ,但仍然是404。编辑或删除后是否重新启动了nginx守护程序?因为很奇怪,您删除了位置块,但仍然得到404。请尝试使用root而不是alias,还可以尝试添加错误日志和访问日志,并查看日志以了解更多信息。正如您所怀疑的,它仍然可能是权限问题。如果IK,
      root
      正在追加,但
      alias
      没有追加。(我尝试了
      alias/home/misha/rxviz-api/;
      ,但仍然是404)。我还尝试从nginx配置中删除
      location/static/{…}
      ,但仍然是404。编辑或删除后是否重新启动了nginx守护程序?因为很奇怪,您删除了位置块,但仍然得到404。请尝试使用root而不是alias,还可以尝试添加错误日志和访问日志,并查看日志以了解更多信息。正如您所怀疑的,它仍然可能是权限问题。