tài liệu nginx giải thích hành vi:
Nếu lệnh proxy_pass được chỉ định bằng URI, thì khi yêu cầu được chuyển đến máy chủ, phần của URI yêu cầu được chuẩn hóa khớp với vị trí sẽ được thay thế bằng URI được chỉ định trong lệnh:
Trong trường hợp của bạn, điều đó có nghĩa là URI yêu cầu được thay thế bằng /api/v1/
URI được chỉ định trong proxy_pass
chỉ thị.
Nếu bạn muốn URI được chuyển nguyên trạng, thì bạn cần thực hiện:
vị trí /api/v1/ {
proxy_pass http://frontend-api.preprod.example.com;
}
Trong trường hợp này, nginx sử dụng URI từ yêu cầu ban đầu với proxy_pass
điểm đến, như được mô tả bởi:
Nếu proxy_pass được chỉ định mà không có URI, thì URI yêu cầu sẽ được chuyển đến máy chủ ở dạng giống như được gửi bởi ứng dụng khách khi yêu cầu ban đầu được xử lý hoặc URI yêu cầu chuẩn hóa đầy đủ được chuyển khi xử lý URI đã thay đổi:
Nếu bạn muốn thay thế một phần của URI yêu cầu bằng một phần khác, bạn cần sử dụng tính năng chụp biểu thức chính quy:
vị trí ~ ^/nguồn/đường dẫn/(.*) {
proxy_pass http://example.com/destination/path/$1;
}
Chỉnh sửa:
Để có được tên miền của yêu cầu ban đầu được chuyển đến thượng nguồn, người ta cần đặt Chủ nhà
Tiêu đề HTTP cho yêu cầu ngược dòng:
proxy_set_header Máy chủ lưu trữ $host;
Việc chuyển địa chỉ IP của khách truy cập qua tiêu đề thường rất hữu ích:
proxy_set_header X-Forwarded-For $remote_addr;