【问题标题】:nginx alias in location - lost last character位置中的 nginx 别名 - 丢失最后一个字符
【发布时间】:2017-05-05 14:21:14
【问题描述】:

我有 nginx 配置

它的一部分

location ~ ^/api/(?<module>.+)/doc/ {
    autoindex on;
    index index.html;
    alias /home/dmac/www/hub/hub/modules/RestApi/Resources/Doc/$1;
    error_log /var/log/nginx/hub-test-error.log debug;
}

但是当我提出请求时,我有错误

2015/03/06 18:46:43 [错误] 11158#0: *1 opendir() “/home/dmac/www/hub/hub/modules/RestApi/Resources/Doc/dashboar”失败 (2:没有这样的文件或目录),客户端:127.0.0.1,服务器:hub.dev, 请求:“GET /api/dashboard/doc/HTTP/1.1”,主机:“hub.dev”

2015/03/06 18:29:37 [错误] 9941#0: *1 opendir() "/home/dmac/www/hub/hub/modules/RestApi/Resources/Doc/consultan" 失败 (2 :没有这样的文件或目录),客户端:127.0.0.1,服务器:hub.dev,请求:“GET /api/consultant/doc/ HTTP/1.1”,主机:“hub.dev”

我尝试更改配置

    location ~ ^/api/(consultant|dashboard)/doc/ {

但错误相同。

nginx版本:nginx/1.7.10 ubuntu 14.04 x64

为什么我有这个错误?怎么修? 您知道为处理不同模块配置 nginx 位置的其他方法吗?

【问题讨论】:

  • 你试过以前的版本吗?可能是最新版本的新bug
  • 不,我不尝试以前的版本。但是在我的家用电脑上,我有 nginx 1.4.6,我明天试试。可能这是解决我的问题。我在这里写下我的进度
  • 我尝试使用 nginx 1.4.6。结果一样。但是,如果我禁用“自动索引”,则会出现错误 *3 目录索引“/home/dimon/www/symfony/crm.dev/src/Test/consultant”被禁止,客户端:127.0.0.1,服务器:crm .dev, request: "GET /test/consultant/doc/HTTP/1.1", host: "crm.dev" Nginx 可以访问这个目录。如果我启用“自动索引”,错误与问题相同(路径中没有最后一个字符)。
  • 也许你可以用root代替alias

标签: nginx


【解决方案1】:

nginx版本1.7.10

出现错误

在最新版本中,此错误已修复。 所以只需更新 nginx。

【讨论】:

  • 任何来源?因为同样存在于 1.15.8。
【解决方案2】:

我遇到了同样的问题,通过在别名指令中的路径上附加一个斜杠来解决它。

alias /home/dmac/www/hub/hub/modules/RestApi/Resources/Doc/$1/;

而不是

 alias /home/dmac/www/hub/hub/modules/RestApi/Resources/Doc/$1;

我猜测一些代码试图删除尾部斜杠,但最终吃掉了最后一个字符。

【讨论】:

    猜你喜欢
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-10
    相关资源
    最近更新 更多