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
Inhaltsverzeichnis Download des Installationspake...
Inhaltsverzeichnis 1. Vorverarbeitung 2. Zusammen...
Der automatische Bildlaufeffekt der Seite kann du...
//MySQL-Anweisung SELECT * FROM `MyTable` WHERE `...
Code kopieren Der Code lautet wie folgt: <Ausw...
Vorwort Für das Projekt ist ein kreisförmiges Men...
Beängstigend, nicht wahr? Übersetzung im Bild: (v...
Das Prinzip besteht darin, zuerst ein Div mit ein...
Inhaltsverzeichnis Vorwort 1. Anspruch und Wirkun...
Ich war in einer Besprechung, als ein Kollege anr...
Inhaltsverzeichnis Die Ursache des Vorfalls Sorti...
Dieser Artikel beschreibt, wie man eine MySQL Mas...
Ich werde nicht näher auf die Theorie von UDP ein...
zabbix Zabbix ([`zæbiks]) ist eine Open-Source-Lö...
1. Installieren Sie weniger Abhängigkeiten: npm i...