nginx - 拒绝在 nginx 中针对特定 url 运行脚本

标签 nginx config run-script

我在 URL example.com/media/ 上有一个媒体文件夹,我想拒绝用户在我的服务器中运行脚本。我的服务器应用程序是 nginx,位于 How to deny script execution inside writable directories我找不到特定 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.py 时,nginx 返回 404 错误页面。我还更改了媒体文件夹执行权限,但我需要为 nginx 执行此操作才能停止查看脚本文件。

最佳答案

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

 location /media/ { 
    location ~ .*\.(php)?$ 
    { 
      deny all; 
    } 
    location ~ .*\.(py)?$ 
    { 
      deny all; 
    }
 }

关于nginx - 拒绝在 nginx 中针对特定 url 运行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22280764/

相关文章:

python - 使用python的带有字典的配置文件

Spring Cloud配置客户端未从配置服务器加载配置

grails - 如何在用于运行脚本的脚本中访问taglib?

Swift 脚本直接在 Xcode Run Script 阶段运行,但由于 NSTask/Process 而不能通过外部文件运行

ios - 解析崩溃报告不起作用

nginx - 如何在 ubuntu 中使用 nginx 获取域名而不是 ip 地址?

django - 带有docker的Django和nginx组成-静态文件未加载

Nginx 有条件地重写 uri

docker - docker-compose卷的行为

scala - com.typesafe.config.ConfigException$ 缺少 : No configuration setting found for key 'play'