繁体   English   中英

特定php文件的nginx规则

[英]nginx rule for specific php file

我在Web服务器上将Nginx与modsecurity和php-fpm一起使用。

我使用OWASP ModSecurity核心规则集。

我正在尝试对一个php文件(contact.php)使用一些特定规则

这是我的nginx配置:

        location /contact.php {
            ModSecurityEnabled on;
            ModSecurityConfig ../owasp-modsecurity-crs/modsecurity_rule1.conf; # Specific rules for this file
    }

        location ~ \.php$ {
            root /home/user/public_html;
            try_files $uri =404;
            fastcgi_pass 127.0.0.1:9001;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_script_name;
            include fastcgi_params;
            ModSecurityEnabled on;
            ModSecurityConfig ../owasp-modsecurity-crs/modsecurity.conf;
    }

当我使用此配置运行时,出现“ 500 Internal Server Error”

并在php-fpm的error.log文件中出现此错误:

2015/01/28 05:43:01 [alert] 1395#0: *1 no upstream configuration, client: IPAdress, server: example.com, request: "POST /contact.php HTTP/1.1", host: "www.example.com", referrer: "https://www.example.com/"

我猜这两个“位置”块存在混淆。

如何解决呢?

位置/contact.php尚未配置上游。 您必须从第二个位置复制粘贴所有剩余的指令

或者,如果您想使其保持干燥,则可能会起作用:

http {
map $request_uri $mod_sec_config {
    /contact.php modsecurity_rule1.conf;
    default      modsecurity.conf;
}
}
.....
        location ~ \.php$ {
            root /home/user/public_html;
            try_files $uri =404;
            fastcgi_pass 127.0.0.1:9001;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_script_name;
            include fastcgi_params;
            ModSecurityEnabled on;
            ModSecurityConfig ../owasp-modsecurity-crs/$mod_seq_config;
    }

但是不确定这是否行得通,据nginx作者称,复制粘贴是编写配置的正确方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM