Maison >développement back-end >Problème PHP >Comment faire fonctionner la configuration Nginx côté Web PHP

Comment faire fonctionner la configuration Nginx côté Web PHP

Guanhui
Guanhuiavant
2020-06-18 18:08:042634parcourir

Comment faire fonctionner la configuration Nginx côté Web PHP

Fonctionnement sécurisé côté Web PHP Configuration Nginx et redémarrage à chaud

Préface

Auparavant, j'aidais les clients à créer un site AB automatisé basé sur GeoIP2 (Nginx Geoip2 gère l'accès depuis différents pays (ou villes) ), le client a récemment souhaité contrôler manuellement la commutation de la station AB via le terminal de gestion
Comment faire fonctionner la configuration Nginx côté Web PHP

Il n'est pas recommandé d'utiliser system, exec et d'autres fonctions pour exécuter des commandes shell

  • Nécessite des opérations complexes d'élévation de privilèges
  • Ces fonctions sont interdites dans les projets généraux
  • En tant que Phper qualifié, sauf circonstances particulières, il est strictement interdit d'activer quelques fonctions liées à la sécurité dans le projet Fonction

Idée de solution

  1. includeConfiguration du fragment dans le fichier de configuration vhost Nginx
  2. Lorsque le backend change de site AB, introduisez la configuration des fragments dans la première étape de modification de la logique PHP
  3. Nginx Reload
    • La première solution : les petits projets utilisent crontab pour exécuter régulièrement nginx -s reload (utilisé avec work_shutdown_timeout)
    • Deuxième solution (recommandée) : Après modification, la marque doit être rechargée (Fichier ou DB ou Cache Le timer utilise un script python pour demander si un rechargement est nécessaire pour exécuter nginx -s reload).

Option 1

Créer un fichier de configuration de fragment

Créez un fichier de configuration Nginx fragment indépendant, tel que Comment faire fonctionner la configuration Nginx côté Web PHP.conf, puis dans nginx vhostinclude

Comment faire fonctionner la configuration Nginx côté Web PHP.conf

root /www/wwwroot/ahost;

2. Fichier de configuration du site include fichier de configuration Comment faire fonctionner la configuration Nginx côté Web PHP.conf

site.conf

server {
        listen       80;
        server_name  0.0.0.0;
        index index.html;
        include /www/wwwroot/abhost/Comment faire fonctionner la configuration Nginx côté Web PHP.conf;
    }

3. Fonctionnement en logique de fondComment faire fonctionner la configuration Nginx côté Web PHP.conf

if($data['site_set'] == AbHostSiteEnum::Ahost) {
    //开启A站
    $ahostPath = AbHostSiteEnum::AhostPath;
    file_put_contents('./Comment faire fonctionner la configuration Nginx côté Web PHP.conf',"root {$ahostPath};");}else {
    //开启B站
    $bhostPath = AbHostSiteEnum::BhostPath;
    file_put_contents('./Comment faire fonctionner la configuration Nginx côté Web PHP.conf',"root {$bhostPath};");}

4. Définissez worker_shutdown_timeout dans la configuration globale de Nginx

Nginx ne peut pas se fermer en douceur dans les 30 secondes, le processus est donc forcé de se fermer

nginx.conf

...worker_shutdown_timeout  30;

5. Exécuter Nginx régulièrement Redémarrage à chaud

crontab -e

*/5 * * * * nginx -s reload

Tutoriel recommandé : "PHP"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer