Nginx如何直接访问index.php时返回404

出于安全考虑,我试图隐藏我的Web应用程序的几乎所有指纹信息。 最重要的是隐藏任何访问者的 PHP </ code>。 所以我尝试修改我的 Nginx </ code>的配置文件。 配置将显示如下。</ p>

  location / {
root / data / site / public;

index index.html index.htm index.php; \ n try_files $ uri /index.php;
nn location /index.php {
fastcgi_pass unix:/var/run/php5-fpm.sock;
include fastcgi.conf;
}
}
</ code> </ pre>

通过这种方式,我成功地从URL隐藏 index.php </ code>。 但是,黑客也可以通过使用某些URL直接访问我的网站,例如 http://example.com/index.php </ code>,这表明我的网站是由 PHP </ code>编写的。 。 有时它可能很危险。
因此,我第二次修改 Nginx </ code>的配置,直接访问 index.php </ code>时渴望 404 </ code>,并且 它看起来像</ p>

  location / {
root / data / site / public;

if if($ request_uri~ /index.php){
返回404 ;
}

index index.html index.htm index.php;
try_files $ uri /index.php;
nn location /index.php {
fastcgi_pass unix:/ var / run / php5 -fpm.sock;
包括fastcgi.conf;
}
}
</ code> </ pre>

但是......,似乎 Nginx </ code >与上一个行为没什么不同。</ p>

有人能告诉我原因吗? 或任何其他解决方案...... </ p>
</ div>

展开原文

原文

For security purpose, I am attempting to hide almost all the fingerprint info of my web application. The most important thing is to hide PHP from any visitors. So I try to modify my Nginx's configuration file. The configuration will show as follows.

location / {
        root   /data/site/public;

        index  index.html index.htm index.php;
        try_files $uri /index.php;

        location /index.php {
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            include fastcgi.conf;
        }
    }

By this way, I successfully hide index.php from URL. However, Hackers could also directly access my website by using some URL such as http://example.com/index.php, which shows that my website is written by PHP. Sometimes it maybe dangerous. So, I modify the Nginx's config second time, longing for 404 when access index.php directly, and it looks like

location / {
        root   /data/site/public;

        if ( $request_uri ~ /index\.php ) {
            return 404;
        }

        index  index.html index.htm index.php;
        try_files $uri /index.php;

        location /index.php {
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            include fastcgi.conf;
        }
    }

However..., it seems that Nginx acts nothing different from the previous one.

Could anyone tell me the reason ? or any other solutions...

duanhuo0577
duanhuo0577 很好的解决方案,但我不是这个应用程序的程序员,这意味着我无法直接修改原始应用程序。此外,我想知道为什么最后的配置没有任何区别。^。^
接近 6 年之前 回复
doupoji3856
doupoji3856 您是否考虑过将index.php重命名为veryWeirdAndLongName.php?或者,如果脚本名称在请求的URI中,您可以自行检入脚本
接近 6 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐