2017-09-24 4 views
0

Ich habe Server, der eine 302 Redirect zu Server einige Inhalte implementiert.wie eine statische Datei zu senden, wenn Nginx Proxy 302 redirect

zum Beispiel, wenn Benutzeranforderung http://a.com/images/a.jpg, mein Server eine Anfrage an server B: http://b.com/images/a.jpg machen, aber server B zurückkehren werden 302 so, was ich will, ist, wenn server B 302 zurückkehren, mein Server ein a.logo an Benutzer senden.

server { 
    listen 80; 
    server_name a.com; 
    location/{ 
     proxy_pass http://www.girls-av.com; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_cache nginx-cache; 
     proxy_cache_valid 200 302 304 1440m; 
     proxy_intercept_errors on; 
     error_page 301 302 = @handler; 
    } 
    location @handler { 
     proxy_pass /home/git/a/images/logo.png; 
    } 
} 

// but I got an error "invalid URL prefix" 

dann versuche ich

location @handler { 
proxy_pass http://a.com/images/logo.png; 
} 

// but I got this error ""proxy_pass" cannot have URI part in location given by regular expression, or inside named location" 

und ich versuche auch

location @handler { 
    alias /home/git/a/images/logo.png; 
} 
// but I got another error the "alias" directive cannot be used inside the named location; 

Was sholud ich tun, kann jemand helfen?

Antwort

0

Was Sie tun können, ist so etwas wie dieses:

server {    
    listen 80; 
    server_name a.com; 
    # ... 

    error_page 301 302 = @handler;   
    location @handler {     
     root /tmp/logo;      
     try_files /logo.png /dev/null =404; 
     error_log /tmp/nginx-error.log debug;           
    }     
} 

Die Datei logo.png, in diesem Fall ist in /tmp/logo/logo.png

nur zu Test bemerken das:

error_log /tmp/nginx-error.log debug; 
+0

es didn‘ t Arbeit, wenn Benutzer Anfrage 'a.com/a/b/c.jpg', wird es versuchen,'/tmp/logo/a/b/c.jpg' nicht 'tmp/logo/logo.png' – chenkehxx

+0

zurückzugeben Hast du 'try_files $ uri /logo.png = 404;' das '/ logo.png' Ich habe gerade getestet und funktioniert – nbari

+0

Ich versuche nur,' try_files/tmp/log/logo.png' zu verwenden, es funktioniert jetzt. – chenkehxx