Heim >Backend-Entwicklung >PHP-Problem >So bedienen Sie die Nginx-Konfiguration auf der PHP-Webseite

So bedienen Sie die Nginx-Konfiguration auf der PHP-Webseite

Guanhui
Guanhuinach vorne
2020-06-18 18:08:042634Durchsuche

So bedienen Sie die Nginx-Konfiguration auf der PHP-Webseite

PHP-Webseite, sicherer Betrieb, Nginx-Konfiguration und Hot-Neustart

Vorwort

Zuvor habe ich Kunden beim Aufbau einer automatisierten AB-Site basierend auf GeoIP2 geholfen (Nginx Geoip2 verwaltet den Zugriff aus verschiedenen Ländern (oder Städten)) ), wollte der Kunde kürzlich die AB-Stationsumschaltung manuell über das Verwaltungsterminal steuern
So bedienen Sie die Nginx-Konfiguration auf der PHP-Webseite

Es wird nicht empfohlen, System-, Exec- und andere Funktionen zum Ausführen von Shell-Befehlen zu verwenden

  • Erfordert komplexe Vorgänge zur Privilegieneskalation
  • Diese Funktionen sind in allgemeinen Projekten verboten
  • Als qualifizierter Phper ist die Aktivierung strengstens untersagt, es sei denn, es liegen besondere Umstände vor einige sicherheitsrelevante Funktionen im Projekt Funktion

Lösungsidee

  1. includeFragmentkonfiguration in der Nginx-vhost-Konfigurationsdatei
  2. Wenn das Backend die AB-Site wechselt, führen Sie im ersten Schritt der Änderung der PHP-Logik die Fragmentkonfiguration ein
  3. Nginx Reload
    • Die erste Lösung: Kleine Projekte verwenden crontab, um regelmäßig nginx -s reload auszuführen (verwendet mit worker_shutdown_timeout)
    • Die zweite Option (empfohlen): Nach der Änderung muss die Markierung neu geladen werden (Datei oder DB oder Cache), und der Timer fragt über das Python-Skript ab, ob ein Neuladen erforderlich ist, um nginx -s auszuführen neu laden

Option 1

1. Erstellen Sie eine Fragmentkonfigurationsdatei

Erstellen Sie eine unabhängige Fragment-Nginx-Konfigurationsdatei, z. B. So bedienen Sie die Nginx-Konfiguration auf der PHP-Webseite.conf, dann in nginx vhostinclude

So bedienen Sie die Nginx-Konfiguration auf der PHP-Webseite.conf

root /www/wwwroot/ahost;

2 . Site-Konfigurationsdatei includeKonfigurationsdatei So bedienen Sie die Nginx-Konfiguration auf der PHP-Webseite.conf

site.conf

server {
        listen       80;
        server_name  0.0.0.0;
        index index.html;
        include /www/wwwroot/abhost/So bedienen Sie die Nginx-Konfiguration auf der PHP-Webseite.conf;
    }

Vorgang in HintergrundlogikSo bedienen Sie die Nginx-Konfiguration auf der PHP-Webseite.conf

if($data['site_set'] == AbHostSiteEnum::Ahost) {
    //开启A站
    $ahostPath = AbHostSiteEnum::AhostPath;
    file_put_contents('./So bedienen Sie die Nginx-Konfiguration auf der PHP-Webseite.conf',"root {$ahostPath};");}else {
    //开启B站
    $bhostPath = AbHostSiteEnum::BhostPath;
    file_put_contents('./So bedienen Sie die Nginx-Konfiguration auf der PHP-Webseite.conf',"root {$bhostPath};");}

4. Legen Sie worker_shutdown_timeout in der globalen Nginx-Konfiguration fest

Nginx kann nicht innerhalb von 30 Sekunden reibungslos beendet werden, daher muss der Prozess geschlossen werden

nginx.conf

...worker_shutdown_timeout  30;

5. Führen Sie Nginx regelmäßig aus. Hot-Neustart

crontab -e

*/5 * * * * nginx -s reload

Empfohlenes Tutorial: „PHP

Das obige ist der detaillierte Inhalt vonSo bedienen Sie die Nginx-Konfiguration auf der PHP-Webseite. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen