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.

One Solution collect form web for “Nginx sert .PHP en téléchargement uniquement lorsque .php est ajouté avec des arguments”

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; }

  • Que dois-je faire pour empêcher l'exploitation de mon serveur postfix?
  • Impossible de se débarrasser de l'état du server Apache
  • Comportement du server étrange, craint la rupture de security mais rien sur les journaux
  • Partage public de la configuration nginx - est-ce OK?
  • Comment utiliser Snort génère-t-il des journaux de packages en mode NIDS?
  • Comment puis-je limiter l'access d'un site aux users LAN uniquement dans IIS 5.1?
  • Déterminer d'où est "sh" exécuté sous l'user apache www-data en utilisant PF ou NETSTAT
  • Blocage de requêtes HTTP répétées dans Apache derrière un équilibreur de charge
  • Liste des utilisateurs utilisant RDP
  • Comment gérer un server web Protection de key privée SSL (mot de passe ou pas de mot de passe)?
  • Sécuriser l'access RDP à Windows Server 2008 R2: l'authentification par niveau de réseau est-elle suffisante?
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.