Wirkung Derzeit gibt es 2 Projekte (Projekt1, Projekt2) und eine index.html, die mit nginx geliefert wird. Ich habe den entsprechenden Linkcode hinzugefügt (später eingefügt), um das Routing der Unterprojekte zu vereinheitlichen. Ich erwarte, dass ich den folgenden Effekt erziele (unter der Annahme von IP: localhost, Port: 8080):
Beginnen wir nun ohne weitere Umschweife mit der Konfiguration Vue-Konfiguration Ich verwende vue-cli2 zum Erstellen des Projekts, daher muss ich einige Vue-Konfigurationsparameter entsprechend ändern. index.js im Konfigurationsordner ist gepackt, daher müssen wir den entsprechenden Projektnamen in build.assetsPublicPath ändern, zum Beispiel //Projekt1 modul.exporte = { Entwickler: {}, bauen: { assetPublicPath: '/project1/' // Beachten Sie das führende und nachfolgende '/' } } //Projekt2 modul.exporte = { Entwickler: {}, bauen: { assetPublicPath: '/project2/' // Beachten Sie das führende und nachfolgende '/' } } Ändern Sie prod.env.js im Konfigurationsordner wie folgt: //Projekt1 modul.exporte = { NODE_ENV: '"Produktion"', BASE_API: '"/api/pro1"' // Dies entspricht später der nginx-Konfiguration} //Projekt2 modul.exporte = { NODE_ENV: '"Produktion"', BASE_API: '"/api/pro2"' // Dies entspricht später der nginx-Konfiguration} [Hinweis] Da ich in meinem Projekt BASE_API als Proxy-Präfix verwende, müssen Sie Ihre eigene Proxy-Konfiguration finden, wenn Ihr Präfix nicht hier ist. Da die Vue-Router-Dateikonfiguration bei jedem anders ist, müssen Sie Ihre Router-Konfigurationsdatei suchen und intern ändern: // Ich habe den Verlaufsmodus verwendet, den Hash-Modus habe ich nicht getestet, ich denke, er sollte den gleichen Effekt haben // project1 exportiere standardmäßig einen neuen Router({ Basis: '/project1/', // Beachten Sie, dass Sie Ihren Unterprojektnamen ändern müssen, dies entspricht Ihrem build.assetsPublicPath Modus: "Verlauf", scrollBehavior: () => ({ y: 0 }), Routen: [] }) //Projekt2 exportiere standardmäßig einen neuen Router({ Basis: '/project2/', // Beachten Sie, dass Sie Ihren Unterprojektnamen ändern müssen, dies entspricht Ihrem build.assetsPublicPath Modus: "Verlauf", scrollBehavior: () => ({ y: 0 }), Routen: [] }) [Hinweis] Beim Ausführen von npm run build erhalten Sie möglicherweise einen Fehler wie .tap(*). Dies liegt daran, dass es ein Problem mit der Version des html-webpack-plugins im Paket gibt. Sie können die folgende Anweisung ausführen # Diese Version ist die Version in Ihrem package.json, aber Sie müssen diese Version erneut angeben$ npm i [email protected] -D Nginx-Konfiguration Zunächst einmal sieht mein Verzeichnis so aus, alle irrelevanten Dateien werden als ... angezeigt. . ├─conf │ ├─... # Andere Dateien│ └─nginx.conf │ ├─html # Schau einfach hier, die anderen benutze ich im Moment nicht│ ├─project1 │ │ └─statisch │ │ ├─css │ │ ├─Schriftarten │ │ └─js │ │ ├─g │ │ └─V │ ├─Projekt2 │ │ └─statisch │ │ ├─css │ │ ├─Schriftarten │ │ └─js │ │ ├─g │ │ └─V │ ├─index.html │ └─50x.html └─... # Andere Dateien [Erklärung] Mein nginx-Verzeichnis ist nativ und enthält einen HTML-Ordner. Um mir Mühe zu ersparen, verwende ich diesen direkt. Natürlich können Sie auch andere Verzeichnisse angeben, aber verwenden Sie vorerst bitte dieselbe Konfiguration wie meine und passen Sie sie später an. Nun beginnen wir mit der Konfiguration der Datei nginx.conf im Ordner conf Ich habe die Originaldatei direkt geändert und die geänderten Konfigurationen befanden sich alle im HTTP-Modul. Daher habe ich andere unnötige Codes durch ... ersetzt. # ... # Reverse-Proxy http { mime.types einschließen; Standardtyp Anwendung/Oktett-Stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; sendfile an; KeepAlive-Timeout 65; Maximale Client-Körpergröße: 20 M; Client-Body-Puffergröße 10 M; große_Client_Header_Puffer 4 128k; # Dies kann als Cluster-Upstream p1_server { verwendet werden Server localhost:8081; } # Dies kann als Cluster-Upstream p2_server { verwendet werden Server localhost:8082; } Server { hören Sie 8080; Servername localhost; Zeichensatz UTF-8; Proxy_Verbindungs-Timeout 180; Proxy_Sendezeitüberschreitung 180; Proxy_Lese_Timeout 180; Proxy_Set_Header Host $host; proxy_set_header X-Forwarder-Für $remote_addr; root html; # Hier geben wir unseren Ordner an. # Die gesamte Projektroute. Ich war faul und habe sie direkt in dieselbe Datei geschrieben. # Wenn es viele gibt, können Sie mehrere Conf-Dateien konfigurieren und sie mithilfe von „Include“ verknüpfen. location / { try_files $uri $uri/ /index.html; # Hier können Sie verstehen, dass es sich um die Datei index.html im html-Ordner handelt } #projekt1 # Hier ist die build.assetsPublicPath-Konfiguration von config/index.js im Vue-Projekt. # Es ist auch die Basis des im Vue-Projekt konfigurierten Routers Standort ^~ /Projekt1 { try_files $uri $uri/ /project1/index.html; # Hier können Sie verstehen, dass es auf die index.html des Ordners project1 unter dem Ordner html angegeben ist } #projekt2 # Hier ist der Konfigurationsort von Projekt 2 ^~ /project2 { # try_files $uri $uri/ /project2/index.html; # Hier können Sie verstehen, dass es auf die index.html des Ordners project2 unter dem Ordner html angegeben ist } # Hier ist die Schnittstelle, die project1 für die Konfiguration aufrufen muss location /api/pro1 { # Hier ist die Konfiguration BASE_API von prod.env.js im Vue-Projekt Proxy_Redirect aus; Proxy_Set_Header Host $host; Proxy_Set_Header X-Real-IP $Remote_Addr; proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for; proxy_pass http://p1_server; # Der p1_server hier entspricht der obigen Konfiguration upstream p1_server {}, hier können Sie Clustering durchführen, ich brauche es nicht, also konfiguriere ich es einfach} # Hier ist die Schnittstelle, die project1 für die Konfiguration aufrufen muss location /api/pro2 { # Hier ist die Konfiguration BASE_API von prod.env.js im Vue-Projekt Proxy_Redirect aus; Proxy_Set_Header Host $host; Proxy_Set_Header X-Real-IP $Remote_Addr; proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for; proxy_pass http://p2_server; # Der p2_server hier entspricht der obigen Konfiguration upstream p2_server {}, hier können Sie Clustering durchführen, ich brauche es nicht, also konfiguriere ich es einfach} # ... } # ... } Abschließend habe ich den Code der index.html gepostet, den ich geändert habe Da ich anhänge, werde ich den von mir angehängten Code direkt veröffentlichen und die anderen werden … ... <p><em>Vielen Dank, dass Sie nginx verwenden.</em></p> <!-- Für Anzeigeort--> <!-- start: anhängen --> <hr> <a href="/project1" rel="external nofollow" >Projekt 1</a> | <a href="/project2" rel="external nofollow" >Projekt 2</a> <!-- Ende: Anhängen--> </body> <!-- Für Anzeigezwecke --> Abschließendes Debuggen Nachdem alle Konfigurationen abgeschlossen sind, können wir nginx starten. Wenn Sie nicht wissen, wie das geht, lösen Sie das Problem bitte selbst. Der Start ist erfolgreich. Wir können dies sehen, indem wir http://localhost:8080 in den Browser eingeben. Klicken Sie auf Projekt 1. Der Link lautet dann http://localhost:8080/project1. Klicken Sie auf Projekt 2. Der Link ändert sich zu http://localhost:8080/project2, was genau unseren Erwartungen entspricht und erfolgreich ist. [Erzwungene Erklärung der Metaphysik] Ich habe es an diesem Tag konfiguriert, aber gleich beim Start trat ein Fehler auf, also habe ich schließlich aufgegeben. Aber als ich am nächsten Tag nachschauen wollte, war beim Start alles in Ordnung. Ich war so verwirrt! Wenn Sie auf das gleiche Problem wie ich stoßen, lassen Sie es einfach in Ruhe, vielleicht ist es am nächsten Tag behoben. 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:
|
<<: Detaillierte Erläuterung des CocosCreator-Projektstrukturmechanismus
>>: Detaillierte Erläuterung der allgemeinen Schritte zur SQL-Anweisungsoptimierung
So können Sie mithilfe des CSS-Stils die Schrifta...
1. Nachfrage Ein Bild bewegt sich in einer Endlos...
In diesem Artikel finden Sie das Installations-Tu...
Prinzip Setzen Sie beim Schweben einen Schatten a...
Inhaltsverzeichnis 1. Datenbanken verstehen 1.1 D...
1. Erstellen Sie eine Planungsaufgabe Anweisung c...
Detaillierte Analyse der Iframe-Nutzung <iframe...
Inhaltsverzeichnis erreichen: Zusammenfassen: Daz...
Was ist Textumbruch um Bilder? Dies ist die Auswi...
Inhaltsverzeichnis 1. Grundlegende Konfiguration ...
Denken Sie im Großen und im Kleinen und lenken Si...
Ich habe heute mit den Netzwerkeinstellungen unte...
1. Gehen Sie zu dem Speicherort, an dem Sie das I...
Inhaltsverzeichnis 1. Implementierungsprinzip des...
Die Aufgabe der Parallelitätskontrolle in einem D...