2

我在 URL 上有一个媒体文件夹example.com/media/,我想拒绝用户在我的服务器中运行脚本。我的服务器应用程序是 nginx,在如何拒绝在可写目录中执行脚本中,我找不到关于特定 URL 的任何特殊内容。这是我的 nginx 服务器配置:

# sites-avalaible/default
server {
        listen  80;
        listen  443 ssl;
        server_name     www.example.com example.com;
        ssl_certificate /var/www/example/ssl/ssl.crt;
        ssl_certificate_key     /var/www/example/ssl/ssl.key;
        location /static  {
                alias   /var/www/example/static;
                expires 7d;
                add_header Pragma public;
                add_header Cache-Control "public, must-revalidate, proxy-revalidate";

        }
        location /media  {
                alias  /var/www/example/media;
                # limit download speed after 5mb download
                limit_rate_after 5m;
                limit_rate 120k;
                limit_req zone=lh burst=5 nodelay;
        }
        location / {
                proxy_pass      http://127.0.0.1:8000;
        }
}

我想拒绝在我的媒体 URL 中运行任何可执行的东西,用户可以在其中将他们的文件上传到服务器。我怎样才能做到这一点?例如当用户导航到example.com/media/bomb.pynginx 时返回 404 错误页面。我还更改了媒体文件夹的执行权限,但我需要为 nginx 执行此操作才能停止查看脚本文件。

4

3 回答 3

3

这将禁用媒体目录中的所有 php 和 py 脚本执行。像这样,您可以禁用任何其他脚本。

 location /media/ { 
    location ~ .*\.(php)?$ 
    { 
      deny all; 
    } 
    location ~ .*\.(py)?$ 
    { 
      deny all; 
    }
 }
于 2014-03-09T12:32:46.307 回答
1

编辑:如果稍后添加对其他脚本类型的支持,那么只提供已识别的媒体类型并拒绝其余的会更安全:

location ^~ /media/ {
    location ~ \.(?:jpg|png|gif)$ {}
    return 403; # or 404
}
于 2014-03-09T13:00:59.713 回答
-2

防止执行 php 的媒体位置

位置 ^~ /media/ {}

于 2015-07-29T17:33:15.533 回答