Ich habe eine Nodejs- und Angularjs-Anwendung, die auf einer einzigen AWS EC2-Instanz ausgeführt wird. Die Codestruktur der Anwendung ist wie folgt:Wie integriert man Nodejs, die auf AWS EC2 laufen, und statische Angularjs-Inhalte auf AWS S3?
Derzeit wird, wenn ein Benutzer den ersten Aufruf der Anwendung macht, wird der Anruf durch NodeJS Express Rahmen abgewickelt, und der Anruf wird an die index.html gerichtet Seite innerhalb Winkel statischen Verzeichnis, mit dem folgenden Code in Server/server.js Datei
res.sendFile(path.resolve(__dirname + '/../web/dist/index.html'));
Von index.html, stellen verschiedene statische Komponenten (JS, HTML, CSS usw.) aufgerufen werden und alle AngularJS Controller/Dienstleistungen ein Rufen Sie zur Erfüllung der Benutzeranforderung zurück zur Nodejs-API auf.
Diese Anordnung funktioniert gut in Einzelinstanz. Jetzt möchte ich den eckigen statischen Inhalt (d. H. Web-Verzeichnis zu AWS S3) verschieben. Dabei muss ich auf den folgenden Code in server.js ändern:
res.sendFile(path.resolve('**AWS S3 URL** +/web/dist/index.html'));
als meine statische Dateien jetzt AWS S3 verschoben haben. Außerdem muss ich alle Winkelsteuerungen und den Dienst so ändern, dass der absolute Pfad zum Nodejs-API-Aufruf verwendet wird. Das bedeutet, viele Änderungen vorzunehmen und die Deployment-Konfiguration einzuführen (die wir sowieso zu einem späteren Zeitpunkt aus Gründen der Flexibilität haben müssen).
Ein weiterer Ansatz, den wir machen können, ist bewegen index.html von Web-Server-Ordner, indem Sie die folgenden Änderungen in Server/server.js machen:
res.sendFile(path.resolve(__dirname + '/../server/index.html'));
dann den folgenden Code in server.js in den Griff Umleitungen für statische Inhalte von NodeJS bis S3, etwa so:
app.get('/assets/*', function(req, res){
var requestURL = req.url;
var redirectedURL = <<**Remote S3 base URL**>> + requestURL;
res.redirect(redirectedURL);
});
es ist jedoch die Sorge, wird viele Umleitungen und ich frage mich, ob das ein gutes Design? Ich habe gelesen, dass Suchmaschinen Anwendungen mit vielen Redirects (HTTP 301, 304) nicht mögen und diese Seiten niedriger einordnen. Daher versuche ich herauszufinden, was bei der Bereitstellung von nodejs in AWS EC2 und statischen angularjs-Inhalten in S3 am besten ist. Jeder Rat wird sehr geschätzt.
Umleitungen sind nicht erforderlich. Sie sollten Ihren statischen Webinhalt direkt von S3 aus bereitstellen, indem Sie S3-URLs für Ihre Ressourcen verwenden. Dies reduziert auch die Belastung Ihres Servers. – user818510
Schlägst du vor, dass auf index.html (in S3) direkt über den Browser zugegriffen werden sollte, anstatt über nodejs den Aufruf an index.html weiterzuleiten, und auch alle Winkelsteuerungen in S3 mit absoluter NodejS-API-URL zu aktualisieren. – Dev