2011-12-21 38 views
7

Tôi có một dự án django được thiết lập với nginx + apache. Cổng http để truy cập bên ngoài là 20111 sau đó được chuyển tiếp đến máy chủ (có IP nội bộ) đến cổng 80. Vì vậy, nginx lắng nghe trên cổng 80 (và chuyển các yêu cầu liên quan đến apache trên cổng 5000).quản trị viên django chuyển hướng đến cổng sai khi lưu

Giờ đây, có thể truy cập thông tin đăng nhập ban đầu từ bên ngoài qua số http://externalip:20111 - nhưng khi tôi hoàn tất tác vụ quản trị, như lưu mục nhập, tôi được chuyển hướng đến http://externalip/path/to/model - không có cổng 20111. Kết quả là hết giờ. Làm cách nào tôi có thể yêu cầu django sử dụng tên máy chủ/cổng cụ thể (ví dụ: http://externalip:20111) cho tất cả các chuyển hướng quản trị viên?

+0

Tôi nghĩ trang web của bạn (http: // externalip: 20111/admin/sites/site /) không có cổng trong trường tên miền của nó. Tên miền trang web của bạn có vẻ là "externalip" thay vì "externalip: 20111". Điều này có đúng không? – jpic

+0

Tôi không sử dụng khung Site. Bạn có nói rằng nếu tôi kích hoạt nó, nó sẽ tự động làm cho khung quản trị sử dụng Site.domain trên tất cả các chuyển hướng? – pholz

+0

OK, tôi đã thử sử dụng khung Site bây giờ, tôi bao gồm cổng trong trường tên miền và tôi đặt SITE_ID thành ID chính xác, nhưng quản trị viên vẫn chuyển hướng tôi đến url cơ sở không có cổng 20111. – pholz

Trả lời

3

Khi triển khai các ứng dụng phía sau proxy hoặc cân bằng tải, thông thường phải dựa vào tiêu đề X-Forwarded-Host. Django có support cho nó

Trước hết, bạn phải thiết lập nginx để gửi tiêu đề thích hợp. Thêm vào cấu hình máy chủ nginx của bạn (bên trong phần location của bạn):

proxy_set_header X-Forwarded-Host $host:20111; 

Thứ hai, thêm vào settings.py của bạn:

USE_X_FORWARDED_HOST = True 

Nó sẽ cho phép django tin tưởng X-Forwarded-Host tiêu đề từ một yêu cầu.

Nó sẽ làm cho nó hoạt động cho bạn. Vì lý do bảo mật, bạn không nên tin tưởng mọi giá trị được gửi trong X-Forwarded-Host, vì vậy, hãy thêm các miền/IP đáng tin cậy của bạn vào ALLOWED_HOSTS trong settings.py

Các vấn đề liên quan