Score:0

nginx config reverse proxy lose basepath on redirect without slash

ธง 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
jp flag
คุณสามารถใช้ [`proxy_redirect`](http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_redirect) เพื่อแก้ไขการตอบกลับ 3xx จากแอปพลิเคชันของคุณใช้: `curl -I http://example.com/a-ms/doc` เพื่อระบุค่าที่แน่นอนของส่วนหัวการตอบสนอง http ของ 'Location'
Linh Nguyen avatar
in flag
@RichardSmith ฉันได้รับ `HTTP/1.1 301 ย้ายอย่างถาวร` จาก curl -i ฉันควรใส่ค่า proxy_redirect เป็นเท่าใด
Richard Smith avatar
jp flag
ใช้ `-I` (ตัวพิมพ์ใหญ่ `I`) เพื่อดูค่าของส่วนหัวการตอบสนอง `Location:`
Linh Nguyen avatar
in flag
@RichardSmith ฉันตรวจสอบแล้วและตำแหน่งคือ /doc/ ฉันอัปเดตไฟล์กำหนดค่า nginx ด้วย proxy_redirect /doc /a-ms/doc และตอนนี้มันใช้งานได้ ขอขอบคุณ!
Score:0
ธง in

ทำตามคำแนะนำของ RichardSmith ในการใช้งาน proxy_redirect และตอนนี้การเปลี่ยนเส้นทางตำแหน่งของฉันก็ถูกต้องและรวมเส้นทางตำแหน่งไว้ด้วย

ตำแหน่ง /a-ms/ {
   เขียนใหม่ /a-ms/(.*) /$1 ตัวแบ่ง;
   proxy_pass http:host.docker.internal:3000/;
   proxy_redirect /doc /a-ms/doc; #เพิ่มสิ่งนี้
}
    
ตำแหน่ง /b-ms/ {
   เขียนใหม่ /b-ms/(.*) /$1 ทำลาย;
   proxy_pass http:host.docker.internal:4000/;
   proxy_redirect /doc /b-ms/doc; #เพิ่มสิ่งนี้
}

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา