在我的网站中,用户可以上传他们的文件并拥有该文件的简短网址。 在此之前我使用了apache webserver但现在我想切换到nginx。
在apache中我使用这个片段来删除文件上传到的某个目录的php处理程序:
<Directory /var/www/unkown-user-data/uploads>
RemoveHandler .php .phtml .php3 .php5
RemoveType .php .phtml .php3 .php5
php_flag engine off
AddHandler default-handler .php
</Directory>
但现在,我应该如何在nginx网络服务器上执行此操作?
答案 0 :(得分:1)
Nginx没有removehandler指令。您可以将位置块添加到服务器的不同类型的请求中。
我认为uploads文件夹可能包含.php .phtml .php3 .php5文件,当你从该文件夹请求时,你不想执行这些文件。这是我的建议:
location ^~ /uploads/ {
root /var/www/unkown-user-data;
expires max;
}
注意:“^〜”很重要(这意味着优先级高于正则表达式“〜”块)。否则,正则表达式位置块,如
location ~ \.php$ {
...
}
将首先匹配,PHP脚本将被错误地执行。这是nginx wiki中的匹配顺序:
1. Directives with the "=" prefix that match the query exactly (literal string). If found, searching stops. 2. All remaining directives with conventional strings. If this match used the "^~" prefix, searching stops. 3. Regular expressions, in the order they are defined in the configuration file. 4. If #3 yielded a match, that result is used. Otherwise, the match from #2 is used.