Nginx Maintenance Mode (503) dans le sous-directory avec PHP-FPM

J'utilise Nginx avec PHP-FPM et je souhaite restreindre l'access à un sous-directory de files PHP sur mon site afin que seul le trafic de mon adresse IP soit autorisé.

Voici ce que j'ai essayé, en supposant que mon IP est 1.1.1.1:

location ^~ /blocktest/ { if ($remote_addr != "1.1.1.1") { return 503; } } 

Cela bloque le public, mais les scripts PHP ne sont plus exécutés pour moi, et je suis simplement invité à download le file brut. Alors, j'ai essayé d'inclure mon file de configuration PHP dans le bloc, comme ceci:

 location ^~ /blocktest/ { if ($remote_addr != "1.1.1.1") { return 503; } include /usr/local/nginx/conf/php.conf; } 

… mais le public peut alors accéder aux files PHP. Pouah. Une idée sur la façon dont je pourrais faire fonctionner cela? Merci!

Pour reference, voici mon file php.conf:

 location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_connect_timeout 60; #fastcgi_send_timeout 180; #fastcgi_read_timeout 180; fastcgi_send_timeout 2000; fastcgi_read_timeout 2000; fastcgi_buffer_size 256k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; fastcgi_param QUERY_STRING $query_ssortingng; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; # PHP only, required if PHP was built with --enable-force-cgi-redirect fastcgi_param REDIRECT_STATUS 200; } 

2 Solutions collect form web for “Nginx Maintenance Mode (503) dans le sous-directory avec PHP-FPM”

J'ai compris cela. Apparemment, la seule façon d'empêcher les files PHP d'être traité par PHP-FPM est d'utiliser HttpAccessModule "refuser tous", vous ne pouvez pas simplement "returnner 503".

Voici un extrait de configuration Nginx qui définit une page d'erreur 503 personnalisée et vous permet de bloquer tout access public à un sous-directory, y compris les files PHP générés par PHP-FPM. Vous pouvez définir quelles IP ont access au sous-directory bloqué en utilisant les règles définies par la documentation Nginx HttpAccessModule .

 # DEFINE CUSTOM 503 ERROR PAGE error_page 503 /maintenance/503.htm; location = /maintenance/503.htm { internal; } # BLOCK A DIRECTORY location ^~ /directory_to_block/ { error_page 403 =503 /maintenance/503.htm; allow 1.1.1.1; # your IP here deny all; include /usr/local/nginx/conf/php.conf; } 

nginx ne traite qu'un seul location , vous devez donc append la ressortingction dans chaque location que vous souhaitez restreindre. Dans votre cas, vous devriez créer un deuxième location pour traiter les files PHP dans le sous-directory, semblable au premier avec l'ajout de votre ressortingction.

  • Question d'permissions: pourquoi l'user n'a-t-il pas besoin dans mon deuxième groupe php-fpm?
  • La compilation de PHP 5.3.29 avec OpenSSL échoue
  • Mise à niveau de Nginx 1.6.3 à 1.8
  • Comment éviter les erreurs PHP pendant le redémarrage du server?
  • Comment redirect la request d'un conteneur à l'autre lorsque les files .php sont appelés
  • Drupal 8 Erreur Nginx Aucun file ou directory pour les routes
  • Apache2 fcgid (pas FastCGI) avec PHP FPM
  • Nginx, PHP-FPM avec 2 applications dans les sous-modes
  • Chemin exact "Fichier introuvable" dans nginx et php-fpm
  • L'access au site via IP est plus rapide que le nom de domaine?
  • php5-fpm ne crée pas de sockets pour les pools
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.