Nginx conf中的短路逻辑(想覆盖一个位置)

我安装了mediawiki.一切正常,除了我尝试为外部目录命名(Webalizer Web统计信息)时.我看到Nginx将请求传递给/ usage / *到PHP / Mediawiki.我不要我真的希望/ usage /下的所有内容都指向我的别名,而没有别的.与Mediawiki代码和功能完全分开.

# in no way related to Mediawiki. I just want to serve this as static HTML.
location /usage {
    alias /var/www/webalizer/wiki.longnow.org/;
}

# This answers to anything,which may be my problem
location / {
    try_files $uri $uri/ @rewrite;
    index index.php;
}

# A special rewrite to play nicely with Mediawiki
location @rewrite {
    rewrite ^/(.*)$/index.php?title=$1&$args;
}

# PHP,nom nom nom
location ~ \.php${
    include fastcgi_params;
    fastcgi_index index.php;
    fastcgi_pass unix:/tmp/php-fastcgi.socket;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

我希望在其余命令之前列出/ usage location指令会使系统短路,但我对Django颇为宠爱;)

最佳答案
为了阻止Nginx处理进一步的位置指令,它应该以^〜为前缀.
我认为您仍然希望try_files退回到该位置内的404响应.

location ^~ /usage {
    alias /var/www/webalizer/wiki.longnow.org/;
    try_files $uri $uri/ =404;    
}

参考http://wiki.nginx.org/HttpCoreModule#location.

相关文章

文章浏览阅读3.7k次,点赞2次,收藏5次。Nginx学习笔记一、N...
文章浏览阅读1.7w次,点赞14次,收藏61次。我们在使用容器的...
文章浏览阅读1.4k次。当用户在访问网站的过程中遇到404错误时...
文章浏览阅读2.7k次。docker 和 docker-compose 部署 nginx+...
文章浏览阅读1.3k次。5:再次启动nginx,可以正常启动,可以...
文章浏览阅读3.1w次,点赞105次,收藏182次。高性能:Nginx ...