NGINX不遵循别名指令

时间:2014-03-06 03:15:01

标签: nginx

我试图让nginx服务器一些静态文件。我放入了我认为应该是别名url的正确指令,但nginx拒绝服务该页面。我的server.conf如下:

server {

        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        root /usr/share/nginx/html;
        index index.html index.htm index.php;

        # Make site accessible from server.fqdn.suffix
        server_name server.fqdn.suffix;

        location /static/ {
            autoindex on;
            alias /usr/share/nginx/html/poindexter/inspire/static/;
        }

        # Include the basic h5bp config set
        include /etc/nginx/h5bp/basic.conf;
}

我认为这会重定向到/usr/share/nginx/html/poindexter/inspire/static/目录。对于自动索引,它似乎有效。但是,当您单击文件时,它会生成404错误。我采取了一个strace,当然,它并没有尊重别名。

[pid  2542] <... epoll_wait resumed> {{EPOLLIN, {u32=1822502928, u64=139901792235536}}}, 512, 4294967295) = 1
[pid  2542] accept4(10, {sa_family=AF_INET, sin_port=htons(37845), sin_addr=inet_addr("198.55.232.86")}, [16], SOCK_NONBLOCK) = 24
[pid  2542] epoll_ctl(21, EPOLL_CTL_ADD, 24, {EPOLLIN|EPOLLET, {u32=1822503697, u64=139901792236305}}) = 0
[pid  2542] epoll_wait(21, {{EPOLLIN, {u32=1822503697, u64=139901792236305}}}, 512, 10000) = 1
[pid  2542] recvfrom(24, "GET /static/css/bootstrap.min.cs"..., 1024, 0, NULL, NULL) = 772
[pid  2542] open("/usr/share/nginx/html/static/css/bootstrap.min.css", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory)
[pid  2542] write(8, "2014/03/05 21:59:23 [error] 2542"..., 328) = 328
[pid  2542] writev(24, [{"HTTP/1.1 404 Not Found\r\nServer: "..., 172}, {"<html>\r\n<head><title>404 Not Fou"..., 116}, {"<hr><center>nginx</center>\r\n</bo"..., 46}], 3) = 334
[pid  2542] setsockopt(24, SOL_TCP, TCP_NODELAY, [1], 4) = 0
[pid  2542] recvfrom(24, 0x14e9240, 1024, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable

我真的很感激我能得到的任何帮助。我很困惑。

1 个答案:

答案 0 :(得分:1)

我看到了解决这个问题的几种方法。

1

只需将/usr/share/nginx/html/static/的符号链接添加到/usr/share/nginx/html/poindexter/inspire/static/并删除alias指令即可。它类似于文件系统级别的别名。

location /static/ {
    autoindex on;
}

2

删除location ~* \.(?:css|js)$ {阻止。

3

使用重写(此解决方案使用你的根目录中的静态目录)

location ^~ /static/ {
    autoindex on;
    rewrite ^(.+)$ /poindexter/inspire$1;
}