【问题标题】:Static files are served locally but not through nginx静态文件在本地提供,但不通过 nginx
【发布时间】:2017-06-14 07:29:27
【问题描述】:

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

我正在使用restify 并提供这样的静态文件:

server.get(
  /\/static\/?.*/,
  restify.serveStatic({
    directory: __dirname   // => /home/misha/rxviz-api
  })
);

这里是来自 nginx 配置的相关位:

server {
    listen 80;

    server_name api.rxviz.com;

    location / {
        proxy_pass http://localhost:4010/;
    }
}

(完整配置为here

运行时:

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/

【问题讨论】:

    标签: node.js ssl nginx lets-encrypt restify


    【解决方案1】:

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

    我认为你的 nginx 设置有问题:

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

    /static 被附加到包括位置部分的别名后,因此它会搜索 /home/misha/rxviz-api/static/static 这将返回 404,因为在 static/ 中没有 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 不要将这些 /static 调用重定向到您的节点服务,而是尝试从本地路径查找并提供文件。

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

    【讨论】:

    • IFAIK, root 是附加的,但 alias 不是。 (无论如何我尝试了alias /home/misha/rxviz-api/;,但仍然是404)。
    • 我也尝试从 nginx 配置中删除 location /static/ { ... },但仍然是 404。
    • 您是否在编辑或删除后重新启动了 nginx 守护进程?因为奇怪的是你删除了位置块,你仍然得到 404
    • 尝试使用 root 代替别名
    • 也尝试添加 error_log 和 access_log 并查看日志以获取更多信息。正如您所怀疑的,它仍然可能是权限问题。 nginx.com/resources/admin-guide/logging-and-monitoring
    猜你喜欢
    • 2011-01-27
    • 2015-03-18
    • 1970-01-01
    • 1970-01-01
    • 2022-12-17
    • 2014-11-26
    • 2017-03-15
    • 2018-10-23
    相关资源
    最近更新 更多