2012-01-13 25 views
8

Có ai đã bẻ khóa cách để HTTPS hoạt động trên dev_appserver.py không? Tôi cần nó để thử nghiệm ứng dụng canvas Facebook. Tôi đã có một tìm kiếm của các tài liệu và không có gì cho thấy có một cách để làm điều đó (gắn bó 'an toàn' trong app.yaml không có gì tại địa phương).GAE dev_appserver.py qua HTTPS

Tôi nghĩ có thể có cách để ủy quyền cho nó, nhưng có ai có kinh nghiệm về điều này không?

Trả lời

6

Máy chủ dev_apps không hỗ trợ HTTPS. Cách thực tế duy nhất để làm điều này là thiết lập proxy ngược trước ứng dụng của bạn - chẳng hạn như với nginx hoặc Apache - và có lưu lượng SSL proxy cho ứng dụng của bạn.

+0

Và làm thế nào bạn làm điều đó? –

+2

@AhmedNuaman Đó sẽ là một câu hỏi khác - và một cho serverfault.com, không phải là Stack Overflow. –

1

Tôi biết điều này là cuối, trong trường hợp bất cứ ai tìm thấy câu hỏi này:

ngrok là yên tĩnh dễ dàng để thiết lập cho một phong tục đảo ngược proxy HTTPS ..

Nhược điểm duy nhất là ứng dụng webapp2 của tôi vẫn tin rằng nó đang được phân phát qua HTTP, do đó, việc sử dụng redirect() không hoạt động tốt vì nó giải quyết các URL tương đối với URL tuyệt đối bằng cách sử dụng request.url.

workaround của tôi là ghi đè lên RequestHandler.redirect như sau:

class BaseRequestHandler(RequestHandler): 
    def redirect(self, uri, permanent = False, abort = False, code = None, body = None): 
    if uri.startswith(('.', '/')): 
     base_url = self.request.url 
     if base_url.startswith('http://'): 
     base_url = 'https://' + base_url[7:] 
     uri = str(urlparse.urljoin(base_url, uri)) 
    super(RequestHandler, self).redirect(uri, permanent, abort, code, body) 

tôi cần một lớp BaseRequestHandler anyways để thực hiện chức năng tiện ích khác.

0

tôi đặt này trong tôi Appache httpd.conf để proxy kết nối:

<Location /myproject/> 
    ProxyPass http://localhost:8080/ 
</Location> 

Bây giờ sẽ https://localhost/myproject/ trong trình duyệt của mình làm việc.

Lưu ý: SSL cần được bật trên máy chủ Apache của bạn. Trên máy tính OS X của tôi, tôi đã bỏ ghi chú dòng Include /private/etc/apache2/extra/httpd-ssl.conf trong /etc/apache2/httpd.conf và chạy sudo apachectl restart

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