2017-01-08 3 views
1

Ich renne Nginx als Reverse-Proxy-Server vor Apache. Ich muss auf hochgeladene Dateien von Frontend im Backend zugreifen, also ist der Weg, einen Alias ​​in Nginx Site Config zu verwenden, aber statische Dateien im Backend sollten direkt von nginx behandelt werden. Ich bin neu in nginx, hier ist meine partielle Konfiguration, die statische Dateien behandelt. Ich habe auch einen Alias ​​(/ images) angegeben, aber es wird nicht funktionieren, weil es von der zweiten Bedingung überschrieben wird. Wie können die beiden Bedingungen kombiniert werden, so dass nginx statische Dateien von der Root-Anwendung (Backend-App) und hochgeladenen Dateien von der Frontend-App verarbeitet. In Apache Config habe ich einen Alias ​​für dieses Problem und es funktioniert aber ohne Nginx vor.Nginx Serving statische Dateien von Root-und hochgeladene Dateien von Alias ​​

Hier ist mein Teil nginx config:

server { 
     listen 80; 

     root /var/www/website/backend/www; 

     # Add index.php to the list if you are using PHP 
     index index.html index.php index.htm; 

     server_name admin.website.com www.admin.website.com; 

     location/{ 
       proxy_pass http://localhost:8080; 
       include /etc/nginx/proxy_params; 
     } 
#The alias to handle uploaded files(.jpeg, .pdf) from frontend 
     location /images { 
       alias /var/www/website/frontend/www/images; 
     } 
#let nginx handle static files from root 
     location ~* \.(js|css|jpg|jpeg|gif|png|svg|ico|pdf|html|htm)$ { 
       expires  30d; 
     } 
. 
. 
. 
} 

Antwort

1

Der reguläre Ausdruck location Block Vorrang vor einem Präfix location Block nimmt (es sei denn, der ^~ Modifikator verwendet). Details siehe this document.

Versuchen:

location ^~ /images { 
    root /var/www/website/frontend/www; 
} 

Beachten Sie, dass die root Richtlinie in diesem Fall bevorzugt wird (siehe this document für weitere Details)

Verwandte Themen