2012-12-17 12 views
6

PHP isteklerini işleyen bir nginx sunucusuna sahibim, ancak standart olmayan bir bağlantı noktasında (12345 numaralı bağlantı noktası) dinleyecek şekilde yapılandırıldı. Dinleme bağlantı noktasını değiştiremiyorum çünkü kurumsal BT "Hayır" diyor. bağlantı noktasında nginx kutusuna www.domain.com:80 istekleri iletir veri merkezinde bir proxy vardır301 Standart olmayan bağlantı noktasını bir nxy arkasında çalıştıran nginx makinesinde yeniden yönlendirme

12345.

Ben bazı statik 301 Ben yerine koymak gerektiğini yönlendirir var ama Beklenmedik davranışlar alıyorum.

Numune site.conf yönlendirmeler "sunucu {}" blok:

rewrite ^/foo$ /bar/foo/ permanent; 

ben www.domain.com/foo gitmek girişiminde, yönlendirme olur, ancak tarayıcıyı iletmek çalışır www.domain.com:12345/bar/foo/

Sorum şu ki, nginx'i kullanıcıyı doğru bağlantı noktasına yönlendirmeyi nasıl sağlayabilirim (www.domain.com/bar/foo/)?

Belki daha iyi bir soru, ne istediğimi yapmanın doğru yolu nedir? İçeri girmesi gereken 50'den fazla yönlendirme var ve bu yönlendirmelerin her biri için bir "konum" bölümü oluşturmamayı tercih ediyorum.

cevap

2

Daha açık bir yeniden yazma sağlayabilirsiniz. Aşağıdaki deneyin: ^/foo$ çok özel bir durum olduğundan

rewrite ^/foo/ $scheme://www.domain.com:80/bar$request_uri permanent; 

Ben, bunun yerine ^/foo$ ait ^/foo/ kullanmak anlamına geldiğini varsaydık. Sadece gerektiğinde gözden geçirin.

+1

Teşekkürler, Kevin. Gerçekten, ^/foo/demek istedim çünkü hedeflediğim spesifik bir url (pazarlama isteğine göre). Harika çalışıyor ve biraz değiştirdim: yeniden yazmak ^/foo/$ scheme: // $ server_name: 80/bar/permanent; – Jason

İlgili konular