Không giải quyết các cổng trong URL, sức mạnh của nginx là khả năng proxy ngược của nó.
Đầu tiên, tạo các tệp cấu hình khác nhau cho từng ứng dụng web, không chỉ phá vỡ mọi thứ trong một cấu hình máy chủ - hoặc thậm chí tệ hơn, trong nginx.conf tập tin.
Đặt một Thượng nguồn trên chính của bạn khối máy chủ cho mỗi ứng dụng:
ứng dụng web ngược dòng1 {
máy chủ 127.0.0.1:7000 trọng lượng=1 fail_timeout=0; # cài đặt thời gian chờ và trọng lượng là tùy chọn
}
Bên trong các khối máy chủ, khi nginx truy cập vị trí "/", hãy gọi ngược dòng:
người phục vụ {
nghe 443 ssl http2; #nếu bạn sử dụng HTTPS - bạn nên sử dụng HTTPS
server_name webapp1.random-company.com;
[…]
địa điểm / {
[…]
proxy_pass http://webapp1;
}
Lặp lại cho ứng dụng web2 tương ứng:
thượng nguồn webapp2 {
máy chủ 127.0.0.1:8000;
}
người phục vụ {
nghe 443 ssl http2; #nếu bạn sử dụng HTTPS - bạn nên sử dụng HTTPS
server_name webapp2.random-company.com;
[…]
địa điểm / {
[…]
proxy_pass http://webapp2;
}
Liên quan đến các ứng dụng Django/Flask, bạn thực sự không cần gọi các ứng dụng qua TCP/IP, bạn có thể yêu cầu nginx trực tiếp nghe các ổ cắm UNIX của chúng. Bạn sử dụng gì để cung cấp ứng dụng? uWSGI, Gunicorn, (...)?
Đọc thêm cho Flask trên uWSGI
Nói chung, đây không nhất thiết phải là một chủ đề về Ubuntu, có lẽ bạn sẽ muốn kiểm tra StackOverflow hoặc Serverfault để thay thế.