Điểm:0

Nhiều đường dẫn trong Nginx

lá cờ cn

Tôi đang dùng thử nginx lần đầu tiên và tôi đang chạy nó cục bộ. Tôi đã có thể nâng cấp các dịch vụ của mình nhưng tôi có một câu hỏi khó hiểu vì tôi chạy Microservice và trong quá trình nâng cấp, tôi muốn có thể chỉ chặn một dịch vụ cụ thể.

Bây giờ, mỗi dịch vụ có một đường dẫn, vd

\api\v1\ví \api\v1\thẻ

vấn đề tôi gặp phải là cả đường dẫn ví và thẻ đều nằm trong cùng một dịch vụ.

Nếu tôi có các đường dẫn khác nhau, tôi có phải sao chép hoặc có cách nào để tôi có thể làm cho nó hoạt động tốt hơn không?

Đây là tập tin conf của tôi

công_nhân 4;

sự kiện { worker_connections 1024; }
http {

    người phục vụ {

        nghe 80;
        bộ ký tự utf-8;

        vị trí ~ ^/api/v1/người dùng {
            viết lại ^/api/v1/user/(.*) /$1 break;
            proxy_pass http://user-service:3001;
            proxy_http_version 1.1;
            proxy_set_header Nâng cấp $http_upgrade;
            proxy_set_header Kết nối 'Nâng cấp';
            proxy_set_header Máy chủ lưu trữ $host;
            proxy_cache_bypass $http_upgrade;
        }

        vị trí /api/v1/wallet/ {
            # viết lại /api/v1/wallet/(.*) /$1 break;
            proxy_pass http://wallet-service:3007/api/v1/wallet/;
            proxy_http_version 1.1;
            proxy_set_header Nâng cấp $http_upgrade;
            proxy_set_header Kết nối 'Nâng cấp';
            proxy_set_header Máy chủ lưu trữ $host;
            proxy_cache_bypass $http_upgrade;
        }

        vị trí /api/v1/thẻ/ {
            # viết lại /api/v1/wallet/(.*) /$1 break;
            proxy_pass http://wallet-service:3007/api/v1/card/;
            proxy_http_version 1.1;
            proxy_set_header Nâng cấp $http_upgrade;
            proxy_set_header Kết nối 'Nâng cấp';
            proxy_set_header Máy chủ lưu trữ $host;
            proxy_cache_bypass $http_upgrade;
        }

    }


}
lá cờ in
Câu hỏi là gì? Nếu máy chủ ngược dòng không khả dụng, nginx sẽ trả về lỗi proxy bất kể nó xảy ra ở vị trí nào...
King avatar
lá cờ cn
Tôi đang hỏi liệu một số loại thẻ đại diện có thể được chấp nhận hay không để tôi không sao chép vị trí chỉ bằng các đường dẫn khác nhau.
Điểm:0
lá cờ us

Bạn có thể sử dụng thiết lập sau:

vị trí /api/v1/người dùng {
    ...
}

vị trí ~ ^/api/v1/(ví|thẻ)/$ {
    proxy_pass http://wallet-service:3007/api/v1/$1/;
    ...
}

Ở đây chúng tôi sử dụng chụp biểu thức chính quy để đưa thành phần đường dẫn vào $1 biến, và sau đó sử dụng nó trong proxy_pass điểm đến.

Nếu bạn muốn chuyển phần còn lại của URL qua proxy_pass, thì bạn cần chụp lần thứ hai:

vị trí ~ ^/api/v1/(ví|thẻ)/(.*)$ {
    proxy_pass http://wallet-service:3007/api/v1/$1/$2;
    ...
}
King avatar
lá cờ cn
gợi ý thứ hai trả về `nginx-proxy_1 | 2022/03/06 13:11:48 [lỗi] 32#32: *4 không có trình phân giải nào được xác định để giải quyết dịch vụ ví, máy khách: 172.20.0.1, máy chủ: , yêu cầu: "NHẬN /api/v1/card/health HTTP /1.1", máy chủ lưu trữ: "máy chủ cục bộ" nginx-proxy_1 | 172.20.0.1 - - [06/Mar/2022:13:11:48 +0000] "GET /api/v1/card/health HTTP/1.1" 502 157 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Phiên bản AppleWebKit/605.1.15 (KHTML, như Gecko)/15.1 Safari/605.1.15"`
King avatar
lá cờ cn
Cái đầu tiên cũng trả về lỗi 502 cho tôi.
lá cờ us
Bạn cần xác định trình phân giải tên bằng chỉ thị `resolver` trong nginx nếu bạn muốn sử dụng tên cho các dịch vụ phụ trợ của mình. Thay thế là sử dụng địa chỉ IP.

Đă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.