2012-07-27 19 views
5

Sadece Cenevre 6 makinesinde konuşlandırılan bir Nginx/Gunicorn/Django sunucum var, sadece dış dünya tarafından görülebilen SSL bağlantı noktası (443). Yani sunucu https:// ile çağrılmadıkça, herhangi bir yanıt almayacaksınız. Bir http://domain:443 ile çağırırsanız, sadece 400 Hatalı İstek mesajı alırsınız. Sunucuya vurmanın tek yolu 443 numaralı bağlantı noktası.Nginx/Django Yönetici POST https only

Statik dosyalarımı (CSS, vb.) Sunmak için Nginx kullanıyorum ve diğer tüm istekler, Django'da http://localhost:8000 adresinde çalışan Gunicorn tarafından işleniyor. Yani, https://domain.com'a gitmek, sitenin içindeki bağlantılar gibi iyi çalışır, ancak Django yöneticisinde bir form gönderdiğimde, https, yönlendirme üzerinde kaybolur ve sunucuya erişemeyen http://domain.com/ request_uri adresine gönderilir. POST eylemi bile düzgün çalışıyor ve veritabanı güncelleştirildi.

Yapılandırma dosyam aşağıda listelenmiştir. Çözümün bulunması gerektiğini düşündüğüm yer olan location / bölümü. Ancak, proxy_set_header X-* yönergelerinin herhangi bir etkisi gibi görünmüyor. Bir modülü ya da bir şey eksik miyim? Nginx/1.0.15 çalıştırıyorum.

İnternette bulabildiğim her şey X-Forwarded-Protocol https gibi bir şey yapmalı, ancak bir değişiklik yapmam. Ayrıca uzak sunucuda hata ayıklama çalışmasını alamıyorum, ancak bir sonraki adımın bazı ipuçlarını almak için hata ayıklama özelliği ile yerel olarak derlenmesi gerekebilir. Son çare, 80 numaralı limanı ortaya çıkarmak ve her şeyi yeniden yönlendirmek ... ama bunun için biraz evrak gerekiyor.

[http://pastebin.com/Rcg3p6vQ](My nginx yapılandırmak argümanlar)

server { 
    listen  443 ssl; 

    ssl on; 
    ssl_certificate /path/to/cert.crt; 
    ssl_certificate_key /path/to/key.key; 
    ssl_protocols  SSLv3 TLSv1 TLSv1.1 TLSv1.2; 
    ssl_ciphers   HIGH:!aNULL:!MD5; 

    server_name example.com; 

    root /home/gunicorn/project/app; 
    access_log /home/gunicorn/logs/access.log; 
    error_log /home/gunicorn/logs/error.log debug; 

    location /static/ { 
     autoindex on; 
     root /home/gunicorn; 
    } 

    location/{ 
     proxy_pass http://localhost:8000/; 
     proxy_redirect off; 
     proxy_set_header Host $host; 
     proxy_set_header X-Scheme $scheme; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header X-Forwarded-Protocol https; 
    } 

} 

cevap

2

bu iki satırın ne tam olarak anlamak için henüz zamanım olmadı mı ama sorunlarımı onları çözüldü kaldırarak:

proxy_redirect off; 
    proxy_set_header Host $host;