Nginx sert .PHP en téléchargement uniquement lorsque .php est ajouté avec des arguments

Voici ma configuration nginx actuelle:

server { server_name mydomain.example; access_log /srv/www/mydomain.example/logs/access.log; error_log /srv/www/mydomain.example/logs/error.log; root /srv/www/mydomain.example/public_html; error_page 404 /404; location / { if ($request_uri ~ ^(.*)\.(php|html)$) { return 302 $1$is_args$args; } try_files $uri $uri/index.html $uri/index.htm @php; index index.html index.htm index.php; } location @php { include /etc/nginx/fastcgi_params; fastcgi_pass unix:/var/run/php-fpm/www.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; try_files $uri.php $uri/index.php =404; } location /support { rewrite ^(.*)\.php$ $1 break; try_files $uri $uri/index.html $uri/index.htm @php; } location /blog { rewrite ^(.*)\.php$ $1 break; try_files $uri $uri/index.html $uri/index.htm @php; } } 

Donc, fondamentalement, j'ai un énorme problème de security qui doit être corrigé le plus tôt possible. Quand je vais à "mydomain.example / filename? Arg = 7887", tout fonctionne bien. Mais quand un client tente d'accéder à "mydomain.example / filename.php? Arg = 7887", le server décide de servir le file en tant que téléchargement. J'ai besoin de le supprimer .php et de le réécrire à "mydomain.example / filename? Arg = 7887". Cela semble se produire quand il y a des arguments après le .php, sinon il enlèvera le .php et fonctionnera bien.

C'est à cause de la folie try_files et d'autres approches douteuses. Supprimez tous vos exercices et rendez-le canonique:

location / { index index.html; if (!-e $request_filename) { rewrite ^/(.*)$ /index.php; } }

location ~ \.php$ { include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param QUERY_STRING $query_ssortingng; fastcgi_pass 127.0.0.1:9000; fastcgi_intercept_errors on; fastcgi_cache default; break; }