为什么nginx抱怨未知指令?

时间:2015-09-15 14:56:32

标签: nginx

我尝试将所有类似/<uuid4>的HTTP请求定向到localhost上运行的特定HTTP服务器。下面是我的nginx.conf中的相关location行:

# nginx.conf
upstream django {
    server unix:///app/django.sock; # for a file socket
}

server {
    access_log /var/log/access.log;
    error_log /var/log/error.log;
    listen      80;

    server_name 127.0.0.1;
    charset     utf-8;

    client_max_body_size 75M;

    # Django media
    location /media  {
        alias /app/media;
    }

    location /static {
        alias /app/static;
    }

    location ~* "[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}$" {  # matches UUIDv4
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass localhost:8000;
    }

    # Finally, send all non-media requests to the Django server.
    location / {
        uwsgi_pass  django;
        include     /app/conf/uwsgi_params;
    }
}

启动nginx时,出现以下错误:nginx: [emerg] unknown directive "8}-([0-9a-f]" in /etc/nginx/sites-enabled/nginx.conf:30

是什么给出了?

1 个答案:

答案 0 :(得分:3)

其实你还有其他错误。我检查了你的服务器块并得到了以下信息:

$ sudo nginx -t
nginx: [emerg] invalid URL prefix in /etc/nginx/sites-enabled/test:23
nginx: configuration file /etc/nginx/nginx.conf test failed

这是关于proxy_pass localhost:8000;行中缺少协议的错误。将其修复为proxy_pass http://localhost:8000;后,测试通过。

您可能正在查看旧的(或错误的)错误日志。