2017-12-22 4 views
0

Ich habe gerade mir eine neue Raspberry Pi 3 und installiert nginx mit Knoten darauf. Der nginx Webserver läuft und läuft. Aber irgendwie bekomme ich die Javascripts meiner Website nicht. Muss ich das Javascript für jeden Standort meines Webservers aktivieren oder gibt es die Möglichkeit, Knoten so einzurichten, dass ich einfach für jede Site auf meinem Server arbeite?Linux: Einrichten von node.js auf nginx

Hier können Sie die Verzeichnishierarchie meiner Websites sehen:

######################################### 
###   Directories   ### 
######################################### 
# /www/var/        # 
# | - > index.html (the hub/mainpage) # 
# | proj1/        # 
# | | - > index.html (website 1)  # 
# | proj2/        # 
# | | - > index.html (website 2)  # 
# | | - > js/somescript.js    # 
# | proj3/        # 
# | | - > index.html (website 3)  # 
# | | - > js/anotherscript.js   # 
# | proj4/        # 
# | | - > index.html (website 4)  # 
# | proj5/        # 
# | | - > index.html (website 5)  # 
# | | - > js/morescript.js    # 
# | ...         # 
######################################### 

Wenn Sie auf meiner Website gehen (http://strtpg.xyz) der Hauptseite aus/www/var/gezeigt wird gerade. Es ist eine Art Hub, wo ich Zugriff auf alle anderen Seiten habe, die auf dem Server gehostet werden. Und Sie können auf die verschiedenen Sites zugreifen, indem Sie den Ordnernamen an den Link anhängen: z. 'http://strtpg.xyz/proj1' oder 'http://strtpg.xyz/proj5'. Einige der Seiten haben Javascript und andere nicht.

Und das ist meine Config-Datei von /etc/nginx/sites-available/:

# Server configuration 
#upstream pnkpnd { 
# server localhost:3420; 
# keepalive 8; 
#} 

server { 
    listen 0.0.0.0:80; 
    listen [::]:80; 
    server_name localhost; 
    index index.html index.htm; 

    location/{ 
     root /var/www; 
     try_files $uri $uri/ =404; 
     # Default root of site won't exist. 
     #return 410; 
    } 

    location /strtpg { 
     root /var/www; 
     try_files $uri $uri/ =404; 
    } 

    location /dshbrd { 
     root /var/www; 
     try_files $uri $uri/ =404; 
    } 

    location /pnkpnd { 
     root /var/www; 
     try_files $uri $uri/ =404; 
#  proxy_http_version 1.1; 
#  proxy_set_header Upgrade $http_upgrade; 
#  proxy_set_header Connection 'upgrade'; 
#  proxy_set_header X-Real-IP $remote_addr; 
#  proxy_set_header X-Forward-For $proxy_add_x_Forwarded_for; 
#  proxy_set_header Host $http_host; 
#  proxy_set_header X-NginX-Proxy true; 
#  proxy_pass http://strtpg.xyz/; 
#  proxy_redirect off; 
    } 

    location ~ /\.ht { 
     deny all; 
    } 
} 

die alle Sachen, die ich Knoten mit meiner Web-Site zum Laufen zu bringen ausprobiert wird kommentiert aus, so kann ich die Website selbst zumindest sehen.

+0

an zu example.com zu Ihrem Knoten Anwendungsserver erstellt Wie das alles zusammenhängt node.js? Ich kann anscheinend keine Verbindung zu nodeJS finden. Du hast mich verwirrt. – Stamos

+0

Benötige ich node.js nicht, um Javascript auf meinem Server laufen zu lassen? – Jub

Antwort

1

Knoten wird normalerweise als Webserver verwendet, der einen Port überwacht, statische Dateien bereitstellt und über API-Endpunkte verfügt, auf denen JavaScript auf dem Server ausgeführt wird. Um dies zu erreichen, verwenden Entwickler Anwendungs-Frameworks wie ExpressJS.

Das Zeigen von nginx auf ein Verzeichnis wie /var/www ist falsch.

Normalerweise müssen Sie Ihre NodeJS App wie diese

$ node app.js

laufen Danach können Sie Server mit einem Port abhört. Sagen wir, dass in diesem Fall 3000

ist, so dass curl http://localhost:3000/ Ihre Root-Site erhalten wird. Es ist Ihr Job von innen app.js, um alle Ihre statischen und dynamischen Inhalte, die Ihre Anwendung dient, einzurichten. Beispiel: Wenn Sie index.html senden möchten, müssen Sie eine sendfile tun.

In der nginx-Seite müssen Sie nur einen Reverse-Proxy erstellen.

Jetzt nginx Willen Proxy alle Anforderungen, die http://localhost:3000

server { 
    listen 80; 

    server_name example.com; 

    location/{ 
     proxy_pass http://localhost:3000; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection 'upgrade'; 
     proxy_set_header Host $host; 
     proxy_cache_bypass $http_upgrade; 
    } 

} 
+0

Muss ich für jeden Standort, der JavaScript verwendet, die Proxyeinstellungen festlegen, und wenn ja, muss jeder Standort einen anderen Anschluss haben? – Jub

+0

Nein, es gibt keine Notwendigkeit. Sie sollten anfangen zu lesen "was ist" und "wie es funktioniert", weil Sie Verständnis oberflächlich ist. – Stamos

+0

Sieht so aus, als ob ich das nächstes Jahr anschauen sollte. ^^ Es scheint mir, dass es viel einfacher wäre, nginx zu entfernen und Apache zu installieren, um die Javascripts auf der Serverseite laufen zu lassen. Dies würde mir erlauben, mein Ziel vielleicht ein bisschen einfacher zu erreichen. – Jub

Verwandte Themen