在Web服務(wù)器中,Nginx是一個流行的Web服務(wù)器,它支持許多高級的特性,例如反向代理、負(fù)載均衡和靜態(tài)文件緩存。然而,在某些情況下,您可能希望禁止PHP運行。本文將介紹如何使用Nginx禁止PHP的方式。
使用Nginx禁止PHP的最簡單方法是創(chuàng)建一個新的Nginx Server Block,并將其配置為不服務(wù)PHP文件。例如:
server { listen 80; server_name example.com; location / { root /var/www/example; index index.html; } location ~ \.php$ { return 403; } }
上面的配置使用了Nginx的location指令,來匹配所有的PHP文件,并將HTTP響應(yīng)代碼設(shè)置為403,表示禁止訪問。用戶訪問PHP文件時,將會收到403 HTTP錯誤。這是最常見的禁止PHP的方法,但并不是最嚴(yán)謹(jǐn)?shù)姆椒ā?/p>
更為嚴(yán)謹(jǐn)?shù)姆椒ㄊ峭ㄟ^FastCGI將PHP腳本傳遞給PHP處理程序,并在這個過程中禁止掉執(zhí)行腳本的權(quán)限。例如:
server { listen 80; server_name example.com; root /var/www/example; location / { index index.php index.html; } location ~ \.php$ { fastcgi_split_path_info ^(.+?\.php)(/.*)$; fastcgi_pass unix:/run/php/php7.2-fpm.sock; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; internal; } }
上述配置向PHP-FPM發(fā)送FastCGI請求,以便執(zhí)行PHP腳本。但是,由于添加了internal指令,PHP-FPM將不會響應(yīng)外部請求。而只能由Nginx本地請求發(fā)送這些請求。這將防止用戶直接獲取到PHP腳本,從而禁止PHP。
除了Nginx自身外,還可以使用Linux firewall來禁止PHP運行。例如:
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m string --string "php" --algo bm -j DROP
此iptables規(guī)則將在服務(wù)器的HTTP端口上檢測是否存在字符串“php”,如果存在則丟棄該請求。這也是一種強制禁止PHP的方法。
最后,在使用Nginx禁止PHP時,需要注意的一個問題是PHP代碼依賴于Web服務(wù)器,因此,禁止PHP可能會破壞Web應(yīng)用程序的核心功能。如果您想禁止PHP,請確保具有相應(yīng)的備份和測試策略,以確保您的應(yīng)用程序繼續(xù)正確運行。