2016-03-18 23 views
0

Farklı bir slayda göndermek için bir URL'yi yeniden yazmak istiyorum. İşte Nginx Proxy öncesi yeniden yazma

ilk Sunucu: In

upstream splunk { 
    server 127.0.0.1:8000; 
} 

upstream test{ 
    server 127.0.0.1:88; 
} 
server { 
    listen 88; 
    root /var/www/errors/; 
    index index.html; 
    location ~* ^.+\.(jpeg|gif|png|jpg) 
    { 
     root /var/www/images/; 
    } 
} 

/var/www/hatalar /: 495.html 496.html 404.html

İşte

benim proxy:

server { 
    listen 443 ssl spdy default_server; 
    error_page 404 @404; 
    error_page 495 @495; 
    error_page 495 @496; 
    location @404 
     { 
     rewrite^/404.html break; 
      proxy_pass http://test; 
     } 
    location @495 
     { 
     rewrite^/495.html break; 
      proxy_pass http://test; 
     } 
    location @496 
     { 
     rewrite^/496.html break; 
      proxy_pass http://test; 
     } 
    location/
    { 
     if ($ssl_client_verify = NONE) 
     { 
      return 496; 
     } 
     if ($ssl_client_verify != SUCCESS) { 
      return 495; 
     } 
    proxy_pass http://splunk; 
    proxy_set_header X-Remote-User   $username; 
    proxy_set_header X_Remote_User   $username; 
    proxy_set_header X-SSL-Client-Serial $ssl_client_serial; 
    proxy_set_header X-SSL-Client-Verify $ssl_client_verify; 
    proxy_set_header X-SSL-Client-S-DN  $ssl_client_s_dn; 
    proxy_set_header X-SSL-Client-S-DN-CN $username; 
    } 
} 

İlk sunucu iyi çalışıyor ve herhangi bir sorun olmadan index.html, 404.html vb. İkincisi, ilk sunucudaki uygun sayfaya göndermek için URI'yi yeniden yazmalıdır. Mevcut yapılandırmamla 400 Bad Request almaya devam ediyorum.

Şimdiden teşekkürler çok

DÜZENLEME: break anahtar sözcüğü ile sayfalar düzgün yönlendirilir. Ne yazık ki, hedef sayfalardaki görüntüler (örnekler için 404.html) yüklenmez ve sunucu 400 Hatalı İstek gönderir. Bu vhost ile doğrudan bağlantı kurarken sayfayı doğru görebildiğim için (bu yüzden HTML doğrudur) bu garip.

EDIT2: İkinci sankondan Erişim günlükleri:

172.20.175.133 - - [19/Mar/2016:16:09:31 -0700] "GET/HTTP/1.1" 400 728 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36" 
172.20.175.133 - - [19/Mar/2016:16:09:32 -0700] "GET /logo.jpg HTTP/1.1" 400 728 "https://secondvhost.net/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36" 
172.20.175.133 - - [19/Mar/2016:16:09:32 -0700] "GET /images/logo.jpg HTTP/1.1" 400 728 "https://secondvhost.net/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36" 
172.20.175.133 - - [19/Mar/2016:16:09:32 -0700] "GET /var/www/images/logo.jpg HTTP/1.1" 400 728 "https://secondvhost.net/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36" 
172.20.175.133 - - [19/Mar/2016:16:09:32 -0700] "GET /favicon.ico HTTP/1.1" 400 728 "https://secondvhost.net/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36" 

ilk sankondan (açılış bir) hiçbir 400 yoktur.

+0

'err' doesn ucunda aynı olmalıdır geçerli bir ana bilgisayar adı gibi görünmüyor. Hata günlükleriniz daha fazla bilgiye sahip olabilir. – Kyle

+0

Test etmek için yeniden adlandırdım, yalnızca akış yönündeki sunucunun adı. Bu bölüm iyi çalışıyor, sadece doğru şekilde yüklenmemiş resimler. – Arkon

+0

Bağlantı noktası 88'i dinlemektesiniz, ancak yukarı akış yapılandırmanızda – Kyle

cevap

0

rewrite aynı yerde işlemek için break kullanmanız gerekir.

location @404 { 
    rewrite^/404.html break; 
    proxy_pass http://err; 
} 

Ayrıntılar için this document adresine bakın.

+0

'un üstünde bunlar için çok teşekkürler! Gerçekten de, bir ara ile çok daha iyi çalışıyor ve doğru sayfaya ulaşabiliyorum. Ama resimler düzgün yüklenmemiş ve nginx 400 Hatalı İstek göndermeye devam ediyor. Son yazım ile ana sayfamı düzenliyorum. Herhangi bir fikrin varsa?tekrar teşekkürler – Arkon

0

deneyin değişen

location ~* ^.+\.(jpeg|gif|png|jpg) { root /var/www/images/; }

location ~* \.(?:jpeg|gif|png|jpg)$ { root /var/www/images/; }

için normal ifade konumu ( $ değil, başlangıcı)

+0

Teşekkürler, ben de değiştim. Hala aynı. Hiçbir şey bilmediğim favicon.ico üzerinde 400 hata gördüğümden, resmi ilk proxy'den (http: // splunk) yüklemeye çalıştığına inanıyorum. İlk yazımdaki iki hayaletten günlükleri yapıştırdım. Html'de tam bir url kullandığımda, iyi çalışıyor (http://10.10.10.10:88/logo.jpg) bu nedenle ressource'a erişemeyen kesin bir şekilde nginx. – Arkon

+0

Hata günlükleri ne diyor? – Kyle

+0

Günlüklerde garip bir şey yok, erişim günlüğünde 400 hatası görünüyor. Hata kayıt dosyası boş. Hata ayıklama seviyesi, hangisinin en düşük olduğu uyarısında bulunur. – Arkon