2010-08-02 12 views
21

Django ile oluşturulmuş bir web sunucum var. Şu anda bir yönlendirici arkasında evde bir dizüstü bilgisayar kapalı çalışıyorum.Http POST, URL'de bağlantı noktasını kapatır

Yönlendiricinin, belirli bir bağlantı noktasına gönderilen tüm trafiği bu dizüstü bilgisayara yönlendirecek şekilde yapılandırılmış hali var.

Django'yu çalıştırmak için mod_wsgi'yi kullanarak Nginx'i Apache için ters bir proxy olarak kullanıyorum.

Benim sorun budur: Ben herhangi bir POST form göndermeyi denediğinizde, liman #

Doğal olarak (örn 209.245.23.201:1552/login/ 209.245.23.201/login/ olur) url kaldırılırsa, Bu molalar. Buna neden olan şey (Nginx, Apache, Django?) Ve bunu nasıl düzeltebilirim?

Şimdiden teşekkürler.

DÜZENLEME: Formların gönderildiği anlaşılıyor, ancak yönlendirme başarısız olduğunu düşünüyorum.

DÜZEN 2: Sorun ya Nginx ile ya da Nginx ve Apache arasındaki etkileşim ile. Apache ile kurulumu django çalıştıran tek sunucu olarak denedim ve iyi çalıştı. Yani ya Nginx limana düşüyor, ya da bir şekilde Apache NXXx tarafından harekete geçiyor Nxtx tarafından proxy.whatever proxy.whatever harekete geçiyorsa ne olursa olsun

+0

aptalca sorular ... port numarasının düştüğünü nereden biliyorsunuz? Nasıl buldun? – luiscolorado

+0

Adres çubuğumda kelimenin tam anlamıyla URL’den kaldırılır. –

+0

Bu bir tarayıcı sorunu olabilir. Hangi tarayıcıyı kullanıyorsunuz? –

cevap

40

Geliştirme sunucumda da aynı sorun var. Bazı internet aramalarından sonra, çözümün nginx'in proxy konfigürasyonunu değiştireceği bu tartışmayı (nginx, apache, and odd admin error) buldum. değiştirmek için

yapılandırma ayarıdır: Bütün iyi çalışıyor şimdi benim ngnix + (işçi mpm ile) apache2 + django olarak

proxy_set_header   Host $host:$server_port; 

:

proxy_set_header   Host $host; 

çözüm noktası numarasını eklemektir .

+0

Evimin dev ortamı ile aynı sorunu yaşıyordum ve bunu çözdüm. Bu sorunun cevabı kabul edilmiş olmalı. – mitchf

+2

Benim durumumda $ server_port çözülmedi ve server_port'umu el ile ("$ host: 8080") koymak zorunda kaldım. –

+0

Techside'a teşekkürler, bu harika. Vagrant'ta Nginx + Django'yu çalıştırırken Vagrant'ın dışsal: 8000'den iç: 80'e ve nginx'in dahili proxy'lediği: 80'den django'ya dahili olarak: 8000'de Amit ile aynı şeyi yapmak zorunda olduğumu ekleyeceğim. $ server_port, muhtemelen nginx'te 80 olmasından dolayı çözülmedi. – kibibu

6

İlgilendiğiniz her şeyin net HTTP olduğu (örneğin AJP gibi bir şeyden farklı olarak) bir protokol çalıştıracağım Wireshark gibi ana bilgisayardaki analizör ve yönlendirmenin hangi noktada sunulduğunu belirler.

2

Hata günlüklerini kontrol edin. Linux'ta benim/var/log/apache2'deyiz. Sadece error.log için bir arama çalıştırmanız gerekir.

10

Sen nginx geldi özgün HTTP Sunucu başlığında, aktarmak istiyorum:

Bu $host yalnızca kullanan Debian/Ubuntu, içinde nginx varsayılan yapılandırmaya sahip bir hata gibi görünüyor
proxy_set_header Host $http_host; 

: $host$server_port'u içermez. (Bu Debian/Ubuntu paket için /etc/nginx/proxy_params yapılandırılan ve bunu içeren sonra yapılandırmasında geçersiz olabilir.)

$host:$server_port$http_host farklı olduğunu unutmayınız. Açıklama için http://wiki.nginx.org/HttpCoreModule#.24host'a bakın.

Debian'daki Bildirilen ve sabit: http://bugs.debian.org/733016

+1

yaptı Bu benim sorunumu çözer. Kabul edilen cevap – Philip007

+0

değil. Bu kesinlikle gitmek için bir yoldur.Vagrant örneğiyle tünel yapıyordum, bu yüzden limam nginx sunucusunda, Django sunucusunda ve tarayıcımın tarafında farklıydı. –

+0

noob sorusunu pardon, ancak nginx yapılandırmasında proxy_set_header satırı nereye gider? Yer bloğu içinde mi? Dinleme çizgisinden sonra mı? Başka bir yer? Teşekkürler! – Dashdrum

0

Bu modelin get_absolute_url() yöntemiyle elde edilen bir URL ile oluşur olursa, kullanmak gerekir ana bilgisayar adını öne eklemek amacıyla HttpRequest.build_absolute_url() bu yolu geçmek ve bağlantı yolu.

İlgili konular