Điểm:0

Cùng server_name với các ứng dụng khác nhau được cắm dưới dạng các khối vị trí riêng biệt trong nginx

lá cờ bq
s.k

Có thể "cắm" các dịch vụ web khác nhau (tiếp xúc với các vùng chứa docker khác nhau) trong cùng một máy chủ nginx không?

Đây là một ví dụ đơn giản để có được ý tưởng chung:

người phục vụ {
    nghe 80;
    nghe [::]:80;

    client_max_body_size 10M;
    bộ ký tự utf-8;

    server_name my.server.org;

    access_log /var/log/nginx/reverse-access.log;
    error_log /var/log/nginx/reverse-error.log;

    địa điểm / {
        bao gồm proxy_params;
        proxy_pass http://127.0.0.1:8081/;
    }
    vị trí /tĩnh/ {
        bao gồm proxy_params;
        bao gồm /etc/nginx/mime.types;
        bí danh /var/www/app/static/;
    }
    vị trí ^~ /app2/ {
        bao gồm proxy_params;
        proxy_pass http://127.0.0.1:8082;
    }
    vị trí ^~ /app3/ {
        bao gồm proxy_params;
        proxy_redirect tắt;
        proxy_set_header Máy chủ $http_host;
        proxy_pass http://127.0.0.1:8083;
    }
}

ở đâu địa điểm / là gốc của ứng dụng đầu tiên cùng với các tệp tĩnh của nó trong khối vị trí tiếp theo.
Ứng dụng đầu tiên này đang chạy tại http://my.server.org/.

Tôi muốn truy cập hai ứng dụng khác tại http://my.server.org/app2/http://my.server.org/app3/ trong khi vẫn giữ nguyên tên máy chủ my.server.org.
Các ứng dụng này có liên quan đến ứng dụng chính, nhưng chúng hoàn toàn độc lập, tức là chúng được phục vụ từ các thành phần docker khác, với các cổng của chúng được hiển thị tương ứng ở 8082 và 8083.

Có thể đạt được nhiệm vụ đơn giản như vậy trong một người phục vụ chặn?

Hiện tại, tôi nhận được 404 khi truy cập hai URL khác đó.

Về cơ bản, tôi muốn ánh xạ các cổng + URL đang hoạt động đó và tất cả các phần tử con của chúng tới các vị trí được đặt tên:

http://my.server.org:8081/... -> http://my.server.org/...
http://my.server.org:8082/... -> http://my.server.org/app2/...
http://my.server.org:8083/... -> http://my.server.org/app3/...

CHỈNH SỬA:
hoặc cái này:

    vị trí /app3/ {
        if ($http_referer ~ "^$scheme://$http_host/app3/") {
            viết lại chuyển hướng ^/app3/(.*) $scheme://$http_host/app3/$1;
        }
        bao gồm proxy_params;
        proxy_redirect tắt;
        proxy_set_header Máy chủ $http_host;
        proxy_pass http://127.0.0.1:8083;
    }

hoặc cái này:

    vị trí ~*/app3/(.*)$ {
        bao gồm proxy_params;
        proxy_redirect tắt;
        proxy_set_header Máy chủ $http_host;
        proxy_pass http://127.0.0.1:8083/$1;
    }

đang "hoạt động" giống nhau, nhưng chưa hoàn hảo vì còn hai vấn đề:

  1. chỉ HTML thô được phục vụ (ví dụ: không có kiểu dáng: "502 bad gateway" trên các tệp css chẳng hạn)
  2. liên kết trong các trang trỏ đến, ví dụ: http://my.server.org/subfeature/subitem thay vì http://my.server.org/app3/subfeature/subitem. Do đó, họ đang "thiếu" các /ứng dụng3 tiền tố và tôi không biết làm thế nào để thực sự thêm nó nếu nó không hiện diện ở nơi nó thực sự nên có.
Điểm:0
lá cờ za

Đây là một nhiệm vụ điển hình nhưng bạn đã quên hai điều:

  • googling câu hỏi của bạn.
  • thêm viết lại mệnh đề vào mỗi địa điểm {} khối.
s.k avatar
lá cờ bq
s.k
Vấn đề là các tệp thống kê được tự động phân phát ở cấp gốc, không có tiền tố `/app3`, do đó, vì chúng không "biết" về vị trí đó từ bên trong bộ chứa docker mà chúng bắt nguồn, nên chúng sẽ không bao giờ nhập ` đó. /app3` khối vị trí và đường dẫn tìm kiếm của chúng sẽ mặc định là đường dẫn của nginx. Tôi không biết liệu nhiệm vụ có phải là điển hình hay không, nhưng có vẻ như nó không thể giải quyết được trong nginx. :/

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.