2012-06-13 38 views
21

Tôi sẽ sử dụng bình để tạo ứng dụng web và một phần của ứng dụng sẽ liên quan đến tên miền phụ (ví dụ: user1.appname.org).Xử lý miền phụ động trong ứng dụng web (Bình)

Tôi không chắc chắn cách tạo các tên miền phụ này động trong cấu hình bình, hoặc cách triển khai chúng vào một máy chủ sản xuất.

Cách tốt nhất để làm điều này là gì?

Trả lời

34

Tất cả cấu trúc định tuyến của Flask hỗ trợ đối số từ khóa subdomain (điều này bao gồm hỗ trợ cho các biến tuyến).

@app.route("/", subdomain="static") 
def static_index(): 
    """Flask supports static subdomains 
    This is available at static.your-domain.tld""" 
    return "static.your-domain.tld" 

@app.route("/dynamic", subdomain="<username>") 
def username_index(username): 
    """Dynamic subdomains are also supported 
    Try going to user1.your-domain.tld/dynamic""" 
    return username + ".your-domain.tld" 
+1

công việc này sẽ chạy trên máy chủ thử nghiệm localhost Flask? –

+1

Tôi cũng tự hỏi liệu có cách nào để kiểm tra địa phương này không. Tôi đã thử thêm các mục nhập máy chủ vào tệp lưu trữ của tôi. Điều này dường như không hoạt động. –

+0

@sean Bạn muốn làm điều gì đó tương tự cho miền tùy chỉnh. Người dùng đăng ký với subdomain.example.com và sau đó thêm tên miền tùy chỉnh, chẳng hạn như www.mygreatsite.com? Làm cách nào để tôi xử lý quyền truy cập vào miền tùy chỉnh này trong tuyến đường Flask? – Raj

38

Để bổ sung cho bài đăng của Sean Viera, bạn cũng cần đặt biến cấu hình SERVER_NAME.

Tài liệu từ http://flask.pocoo.org/docs/config/

Tên và số cổng của máy chủ. Bắt buộc đối với hỗ trợ tên miền phụ (ví dụ: 'myapp.dev creativity000') Lưu ý rằng localhost không hỗ trợ tên miền phụ để cài đặt thành “localhost” không có tác dụng. Việc đặt SERVER_NAME cũng theo mặc định cho phép tạo URL mà không cần yêu cầu ngữ cảnh nhưng có ngữ cảnh ứng dụng.

Để kiểm tra tại địa phương bạn cần phải thêm mục vào tập tin hosts của bạn, như thế này:

127.0.0.1  cvshark.local 
127.0.0.1  robert.cvshark.local 
127.0.0.1  www.cvshark.local 
+0

Tôi không hiểu ví dụ họ đưa ra: 'myapp.dev creativity000'. Là myapp tên miền phụ và dev tên máy chủ? – compie

+0

@compie Vâng, đúng vậy. –

+1

Đây là câu trả lời hay hơn; nó vượt ra ngoài tài liệu và giải quyết những thứ phức tạp hơn. – gwg

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