Điểm:0

nginx config reverse proxy lose basepath on redirect without slash

lá cờ in

i have the following nginx configs to redirect the url path to it's perspective services

server {
    listen 80;
    server_name abc.com;
    location = favicon.ico { access_log off; log_not_found off }
    
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_cache_bypass $http_upgrade;
    

    location /a-ms/ {
       rewrite /a-ms/(.*) /$1 break;
       proxy_pass http:host.docker.internal:3000/;
    }
    
    location /b-ms/ {
       rewrite /b-ms/(.*) /$1 break;
       proxy_pass http:host.docker.internal:4000/;
    }
    
}

the backend microservices using nodejs to host the api and swagger doc

When i got to a url from a browser like abc.com/a-ms/doc/ it return the swagger normal, but when i go to url without slash for example abc.com/a-ms/doc it redirected me to abc.com/doc which is not what i wanted(it missing the location path)(. How do i fix this with nginx config settings?

Richard Smith avatar
lá cờ jp
Bạn có thể sử dụng [`proxy_redirect`](http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_redirect) để sửa phản hồi 3xx từ ứng dụng của mình.Sử dụng: `curl -I http://example.com/a-ms/doc` để xác định giá trị chính xác của tiêu đề phản hồi http `Location`.
Linh Nguyen avatar
lá cờ in
@RichardSmith tôi nhận được `HTTP/1.1 301 Đã di chuyển vĩnh viễn` từ curl -i, tôi nên đặt giá trị proxy_redirect là gì?
Richard Smith avatar
lá cờ jp
Đã sử dụng `-I` (chữ hoa `I`) để xem giá trị của tiêu đề phản hồi `Location:`.
Linh Nguyen avatar
lá cờ in
@RichardSmith tôi đã kiểm tra và vị trí là /doc/. Tôi đã cập nhật tệp cấu hình nginx của mình bằng proxy_redirect /doc /a-ms/doc và hiện tại nó đang hoạt động. Cảm ơn bạn!
Điểm:0
lá cờ in

theo gợi ý của RichardSmith về việc sử dụng proxy_redirect và bây giờ chuyển hướng vị trí của tôi là chính xác và bao gồm đường dẫn vị trí

vị trí /a-ms/ {
   viết lại /a-ms/(.*) /$1 break;
   proxy_pass http:host.docker.internal:3000/;
   proxy_redirect /doc /a-ms/doc; #thêm điều này
}
    
vị trí /b-ms/ {
   viết lại /b-ms/(.*) /$1 break;
   proxy_pass http:host.docker.internal:4000/;
   proxy_redirect /doc /b-ms/doc; #thêm điều này
}

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