Điểm:0

Kho cổng nginx api có hỗ trợ tên miền phụ

lá cờ ke

Tôi đang làm theo hướng dẫn để thiết lập proxy API, tôi đang chạy các ứng dụng máy chủ sản xuất và phát triển trên cùng một VPS

https://www.nginx.com/blog/deploying-nginx-plus-as-an-api-gateway-part-1/

Tôi đã quản lý miền của mình bằng SSL qua certbot trên cả hai live.domain.comdev.domain.com

Tôi gặp khó khăn khi "Xác định API kho hàng" Vấn đề là định tuyến được giải thích dựa trên vị trí đường dẫn URL, nó không giải thích cách xử lý tên miền phụ được thiết lập trên nó.

Tôi đã thiết lập: api_gateway

bao gồm api_backends.conf;
bao gồm api_keys.conf;

người phục vụ {
    truy cập_log /var/log/nginx/api_live.log chính; # Mỗi API cũng có thể đăng nhập vào một 
                                                   # tập tin riêng biệt

    nghe 443 ssl;
    server_name live.domain.com;

    # Cấu hình TLS
    ssl_certificate /etc/letsencrypt/live/live.domain.com/fullchain.pem; # được quản lý bởi Certbot
    ssl_certificate_key /etc/letsencrypt/live/live.domain.com/privkey.pem; # được quản lý bởi Certbot
    bao gồm /etc/letsencrypt/options-ssl-nginx.conf; # được quản lý bởi Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # được quản lý bởi Certbot
    ssl_session_cache được chia sẻ:SSL:10m;
    ssl_session_timeout 5 phút;
    ssl_ciphers CAO:!aNULL:!MD5;
    ssl_protocols TLSv1.2 TLSv1.3;

    # Định nghĩa API, mỗi định nghĩa một tệp
    bao gồm api_conf.d/*.conf;

    # Phản hồi lỗi
    error_page 404 = @400; # Coi đường dẫn không hợp lệ là yêu cầu không hợp lệ
    bật proxy_intercept_errors; # Không gửi lỗi phụ trợ cho khách hàng
    bao gồm api_json_errors.conf; # Lỗi JSON thân thiện với ứng dụng khách API
    ứng dụng default_type/json; # Nếu không có loại nội dung, giả sử JSON
}
# *lặp lại cho dev.domain.com*

api_backends

sống ngược dòng {
vùng live_service 64k;
máy chủ 127.0.0.1:4000
}
nhà phát triển ngược dòng {
khu dev_service 64k;
máy chủ 127.0.0.1:2000
}

Bất kỳ cách nào tôi có thể quản lý nó với những điều sau đây:

địa điểm / {
    # Cấu hình chính sách tại đây (xác thực, giới hạn tốc độ, ghi nhật ký...)
    #
    truy cập_log /var/log/nginx/warehouse_api.log chính;

    # định tuyến URI
    #
# nếu tên miền phụ hoạt động
    địa điểm / {
        proxy_pass http://live;
    }
# khác nếu nhà phát triển tên miền phụ
    địa điểm / {
        proxy_pass http://dev;
    }

    trả lại 404; # Bắt hết
}

có lẽ tôi có thể sử dụng đoạn mã này mà tôi đã tìm thấy.

    nếu ($host = live.domain.com) {
        trả lại 301 https://$host$request_uri;
    } # được quản lý bởi Certbot

điều này có thể không?

    nếu ($host = live.domain.com){
        vị trí /api {
                proxy_pass http://live/api;
        }
# VÀ/HOẶC
        vị trí /docs/ {
                proxy_pass https://live$request_uri
        }
    }
Điểm:1
lá cờ za

Mọi thứ gần như ổn trong cấu hình của bạn, ngoại trừ việc bạn đã tự lừa mình với những thứ bao gồm và địa điểm / {} khối và không bao gồm phần cấu hình vhost thứ hai.

Bạn chỉ cần đặt live.domain.comdev.domain.com địa điểm / {} các khối tương ứng người phục vụ {} các khối và đó là tất cả (một khối chứa proxy_pass http://live; trong phiên bản trực tiếp, v.v.).

không sử dụng nếu () {} khối tại thời điểm này, bạn không cần nó.

Và vâng, bạn hơi thiếu TLS người phục vụ {} khối, nhưng tôi đoán đó là một câu hỏi khác.

lá cờ ke
Ý bạn là tôi thêm proxy_pass vào khối máy chủ trong "api_gateway" và xóa "warehouse_api.conf"?
lá cờ ke
Tìm ra nó với một số thử và sai! thật đáng buồn, không có đường dẫn "tất cả" nên tôi đã định tuyến đường dẫn api và đường dẫn tài liệu cho mỗi vị trí của mình trong khối máy chủ, tôi sẽ muốn tiếp tục học Nginx để có thể làm công việc này tốt hơn trong tương lai. cảm ơn bạn đã gợi ý.

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