Hintergrund Da die Anzahl der Unterprojekte des Unternehmens zunimmt, wird es mehr als ein Dutzend Projekte unterschiedlicher Größe geben (nur Backend). Gemäß der ursprünglichen Vorgehensweise muss für jedes gestartete Projekt ein Domänenname der zweiten Ebene vorhanden sein, der dem entsprechenden Projekt zugeordnet ist. Zehn Projekte bedeuten, dass es zehn Domänennamen der zweiten Ebene gibt (ohne Testumgebung, Unterproduktionsumgebung usw.). Eine so große Anzahl von Domänennamen ist nicht nur schwierig zu verwalten, sondern, was noch wichtiger ist, eine Verschwendung von Ressourcen. Dieses Problem hat mir lange Zeit Probleme bereitet. Heute habe ich es endlich gelöst. Ich möchte das Boxentagebuch aufzeichnen. In diesem Artikel werden nicht die Prinzipien der einzelnen Anweisungen in nginx erläutert, sondern die Verwendung von nginx-Anweisungen anhand der tatsächlichen Projektkonfiguration geübt und daraus gelernt. Vorbereitung Domänenname Angenommen, der Domänenname lautet: http://www.dev.com Experimentelle Umgebung Alibaba Cloud ECS + CentOS + Nginx + PHP-FPM Projekt 1 1. Projektpfad: /data/wwwroot/project1/ Projekt 2 1. Projektpfad: /data/wwwroot/project2/ Projekt 3 1. Projektpfad: /data/wwwroot/project3/ Beteiligte Wissenspunkte
Implementierungsschritte Um das obige Zugriffsformular zu erreichen, müssen wir die Standortdirektive und die Aliasdirektive in nginx verwenden. Die Konfiguration ist wie folgt Standort ^~ /${PROJECT}/ { Alias {$PATH}; versuche_dateien $uri $uri/ @${PROJECT}; Standort ~ \.php$ { fastcgi_pass unix:/dev/shm/php-cgi.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $Anforderungsdateiname; fastcgi_params einschließen; } } Standort @${PROJECT}{ /${PROJECT}/(.*)$ /${PROJECT}/index.php?/$1 zuletzt neu schreiben; } Hinweis: ${PROJECT} und {$PATH} in der obigen Konfiguration sind die Teile, die im eigentlichen Prozess ersetzt werden müssen. ${PROJECT} ist der Pfadteil der URL, auf den zugegriffen werden muss, z. B. project1, und {$PATH} stellt den tatsächlichen Zugriffspfad des Projekts dar, z. B. /data/wwwroot/project1. Am Beispiel von http://www.dev.com/project1 lautet die entsprechende Nginx-Konfiguration wie folgt Standort ^~ /project1/ { Alias /data/wwwroot/projekt1/öffentlich; versuche_dateien $uri $uri/ @projekt1; Standort ~ \.php$ { fastcgi_pass unix:/dev/shm/php-cgi.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $Anforderungsdateiname; fastcgi_params einschließen; } } Standort @project1{ /project1/(.*)$ /project1/index.php?/$1 zuletzt neu schreiben; } Für die Konfiguration von project2 und project3 müssen Sie nur der obigen Konfigurationsvorlage folgen. Die vollständige Nginx-Konfiguration lautet wie folgt Server { hören Sie 80; Servername http://www.dev.com; access_log /data/wwwlogs/nginx/access_log/www.dev.com_nginx.log kombiniert; Fehlerprotokoll /data/wwwlogs/nginx/error_log/www.dev.com_errr_log; index.html index.htm index.php; # Konfigurationsort von Projekt1 ^~ /project1/ { Alias /data/wwwroot/projekt1/öffentlich; versuche_dateien $uri $uri/ @projekt1; Standort ~ \.php$ { fastcgi_pass unix:/dev/shm/php-cgi.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $Anforderungsdateiname; fastcgi_params einschließen; } } Standort @project1{ /project1/(.*)$ /project1/index.php?/$1 zuletzt neu schreiben; } # Konfigurationsort von Projekt2 ^~ /project2/ { Alias /data/wwwroot/projekt2/öffentlich; versuche_dateien $uri $uri/ @projekt2; Standort ~ \.php$ { fastcgi_pass unix:/dev/shm/php-cgi.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $Anforderungsdateiname; fastcgi_params einschließen; } } Standort @project2{ /project2/(.*)$ /project2/index.php?/$1 zuletzt neu schreiben; } # Konfigurationsort von project2 ^~ /project3/ { Alias /data/wwwroot/project3/public; versuche_dateien $uri $uri/ @projekt3; Standort ~ \.php$ { fastcgi_pass unix:/dev/shm/php-cgi.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $Anforderungsdateiname; fastcgi_params einschließen; } } Standort @project3{ /project3/(.*)$ /project3/index.php?/$1 zuletzt neu schreiben; } # Alle .php analysieren Standort ~ \.php$ { fastcgi_pass unix:/dev/shm/php-cgi.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $Dokumentstammsatz$fastcgi_script_name; #fastcgi_param SCRIPT_FILENAME $Anforderungsdateiname; fastcgi_params einschließen; } #Links zu Bildern und Videos, dies dient zum Zwischenspeichern, zum Zwischenspeichern für 30 Tage und nicht zum Schreiben von Zugriffsprotokollen. Speicherort ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ { läuft in 30 Tagen ab; Zugriff_Abmeldung; } #Konfiguration der js-css-Dateien, hier ist der Cache, Cache für 7 Tage, nicht in den Speicherort des Zugriffsprotokolls schreiben ~ .*\.(js|css)?$ { läuft am 7. Tag ab; Zugriff_Abmeldung; } Standort ~ /\.ht { alles leugnen; } } Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
>>: Upgrade von MySQL 5.1 auf 5.5.36 in CentOS
Überprüfen Sie zuerst die Datei /etc/group: [root...
Installieren Sie nginx Beachten Sie, dass Sie ngi...
Gefühle: Ich bin Backend-Entwickler. Manchmal fühl...
Fehlermeldung: Die Store-Update-, Insert- oder De...
Teil 1: Grundlagen 1. Im Gegensatz zu Pseudoklass...
1. Führen Sie SQL aus, um anzuzeigen wählen Sie @...
Einführung in Docker Docker ist eine Open-Source-...
Sie können Docker installieren und einfache Vorgä...
Inhaltsverzeichnis Vorwort Einrichten der Protoko...
body{font-size:12px; font-family:"Schriftart...
Der META-Tag, umgangssprachlich auch als Tag beze...
Code kopieren Der Code lautet wie folgt: <Kopf...
Die Master-Slave-Synchronisierung, auch Master-Sl...
Inhaltsverzeichnis 1. Bootstrap-Rasterlayout 2. V...
In diesem Artikelbeispiel wird der spezifische Co...