2017-01-26 3 views
0

Ich habe 2 Linux-Server in meinem lokalen Netzwerk. Ich benutze den PC mit der IP 192.168.1.111 als Anwendungsserver, um meine Knotenanwendung auf Port 8080 zu betreiben. Als Webserver verwende ich NGINX auf einem PC mit der IP 192.168.1.100 und konfiguriere diesen als Reverse Proxy.NGINX als Reverse-Proxy kann statische öffentliche Dateien nicht anzeigen

In einem Netzwerk Tab des Browsers sehe ich, dass alle Dateien ordnungsgemäß bedient werden (Status 200 OK). Aber alle statischen Dateien werden nicht angezeigt.

Statische Dateien (css, js, Bilder, Schriften) werden in Unterordnern im Inneren /var/www/domain.com/public

Jede Idee, warum dieses Problem auftritt?

Hier meine nginx.conf Datei:

user www-data; 
worker_processes 2; 
pid /run/nginx.pid; 

events { 
     worker_connections 768; 
     # multi_accept on; 
} 

http { 
     sendfile on; 
     tcp_nopush on; 
     tcp_nodelay on; 
     keepalive_timeout 65; 
     types_hash_max_size 2048; 
     # server_tokens off; 

     # server_names_hash_bucket_size 64; 
     # server_name_in_redirect off; 

     include /etc/nginx/mime.types; 
     default_type application/octet-stream; 

     access_log /var/log/nginx/domain.com/access.log; 
     error_log /var/log/nginx/domain.com/error.log; 

     gzip on; 
     gzip_disable "msie6"; 

     include /etc/nginx/conf.d/*.conf; 
     include /etc/nginx/sites-enabled/*; 
} 

Hier die /etc/nginx/sites-enabled/domain.com Datei

upstream appserver { 
     server 192.168.1.111:8080; 
} 

server { 

     listen 80; 

     server_name domain.com www.domain.com; 
     root /var/www/domain.com/public; 

     location ~ ^/(images/|js/|css/|media/|favicon.ico) { 
       #access_log off; 
       expires off; 
     } 

     location/{ 
       proxy_pass http://appserver; 
       include /etc/nginx/proxy_params; 
       proxy_http_version 1.1; 
       proxy_set_header Upgrade $http_upgrade; 
       proxy_set_header Connection "upgrade"; 
     } 
} 

Und hier die access.log Datei

192.168.1.105 - - [26/Jan/2017:21:33:54 +0100] "GET /images/shop.png HTTP/1.1" 200 13643 "http://192.168.1.100/home" "Mozilla/5.0 (X11; Linux x86_64) ..." 
192.168.1.105 - - [26/Jan/2017:21:33:54 +0100] "GET /images/code.png HTTP/1.1" 200 13443 "http://192.168.1.100/home" "Mozilla/5.0 (X11; Linux x86_64) ..." 
192.168.1.105 - - [26/Jan/2017:21:33:54 +0100] "GET /images/line.png HTTP/1.1" 200 13643 "http://192.168.1.100/home" "Mozilla/5.0 (X11; Linux x86_64) ..." 
+0

haben Sie versucht, 'try_files $ uri = 404' an Ihrem Standort hinzuzufügen? – keja

+0

Nein. Es hilft nicht – nanachimi

Antwort

0

Die Konfiguration I posted korrekt ist. Die Lösung für dieses Problem bestand darin, den Besitz des Stammordners für statische Dateien auf einem Pro zu ändern.

Genehmigung vor:

drwxr-xr-x 2 www-data root 4096 Jan 26 15:01 css/ 
drwxr-xr-x 2 www-data root 4096 Jan 26 15:01 fonts/ 
drwxr-xr-x 2 www-data root 4096 Jan 26 15:01 images/ 
drwxr-xr-x 2 www-data root 4096 Jan 26 16:17 js/ 
[email protected]:~$ 

Erlaubnis nach (dies funktioniert):

drwxrwxr-x 2 webmaster webmaster 4096 Jan 26 00:00 css/ 
drwxrwxr-x 2 webmaster webmaster 4096 Jan 13 00:15 fonts/ 
drwxrwxr-x 2 webmaster webmaster 4096 Jan 13 00:15 images/ 
drwxrwxr-x 2 webmaster webmaster 4096 Jan 26 16:50 js/ 
[email protected]:~$ 

Um den Besitzer zu wechseln und stellen Sie die richtige Berechtigung die folgenden Befehle:

sudo chmod 775 /var/www/domain.com/public/ -R 
sudo chown -R webmaster:webmaster /var/www/domain.com/public/ 
1

Ich bin nicht gut mit regelmäßigem Express Ionen und Nginx, aber so mache ich es und es funktioniert für mich. im Grunde erhalten Sie den Verzeichnis-und Dateipfad gesendet wird, um die URL zu erhalten und dann an einen öffentlichen Alias-Pfad übergeben; Sie scheinen den Speicherort und nichts damit zu tun, außer zum Deaktivieren der "abläuft".

Lage ~ ^/(? [^ /] +)/(? [^ /] +) $ {

  gzip on;    
      alias /nodeproj/public/$dir/$file; 

    } 
+0

Mein Knotenprojekt (Anwendungsserver) befindet sich nicht auf demselben Computer wie der NGINX-Proxy. Entsprechend der Dokumentation, die ich lese, wird das Setzen einer root-Anweisung auf der Serverebene in einem Standortblock angewendet. – nanachimi

Verwandte Themen