Score:0

เปลี่ยนเส้นทางสาธารณะผ่านพร็อกซี Nginx

ธง in

ฉันมี Python/Django API พร้อมจุดสิ้นสุดที่ไม่เหมือนใคร /วิดีโอ ทำงานบนเซิร์ฟเวอร์ Debian ของฉัน

Nginx vhost มีลักษณะดังนี้:

เซิร์ฟเวอร์ {

    server_name example.com;

    ที่ตั้ง / {
        # ผ่านไปยังบริการเว็บเซิร์ฟเวอร์ Uvicorn/Gunicorn
        proxy_pass http://upstream_name/;
        proxy_set_header โฮสต์ $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-ส่งต่อ-สำหรับ $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    ฟัง 443 ssl; # จัดการโดย Certbot
    ssl_certificate /path_to/fullchain.pem; # จัดการโดย Certbot
    ssl_certificate_key /path_to/privkey.pem; # จัดการโดย Certbot
    รวม /etc/letsencrypt/options-ssl-nginx.conf; # จัดการโดย Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # จัดการโดย Certbot

}

ต้นน้ำ upstream_name {
    เซิร์ฟเวอร์ 127.0.0.1:8002;
}

ดังนั้นจึงให้บริการแอปและจุดสิ้นสุดที่ไม่เหมือนใครได้สำเร็จ https://example.com/videos.

ตอนนี้ฉันต้องการให้บริการแอพบน https://example.com/my_app/videosเพื่อให้มีแอปอื่นๆ ที่ให้บริการบนโดเมน/vhost เดียวกันในอนาคต (โดยมีพอร์ตภายในต่างกัน และอัพสตรีมต่างกันใน vhost)

ฉันได้อ่านคำถาม/คำตอบที่คล้ายกันหลายข้อบน ServerFault และพยายามเปลี่ยนแปลงแล้ว ที่ตั้ง / ถึง ตำแหน่ง /my_appขณะที่ลองใช้การกำหนดค่าเครื่องหมายทับต่อท้ายแบบต่างๆ ที่ตั้ง และ proxy_passโดยไม่ประสบความสำเร็จ ฉันพลาดอะไรไปที่นี่?

แก้ไข: แม่นยำยิ่งขึ้น:

  • ด้วยการเปลี่ยน vhost เป็น ที่ตั้ง/myapp -> https://example.com/my_app/videos แสดงข้อผิดพลาดไม่พบ (ไม่ใช่จาก Nginx)

  • ด้วยการเปลี่ยน vhost เป็น ตำแหน่ง /my_app/ -> https://example.com/my_app/videos ได้รับการเปลี่ยนเส้นทางไปที่ https://example.com/videos/ และแสดงข้อผิดพลาด 404 Not Found (จาก Nginx)

us flag
โปรดแสดงการกำหนดค่าที่คุณได้ลอง และขั้นตอนใดที่คุณใช้เพื่อทำให้เกิดปัญหาซ้ำ
in flag
@TeroKilkanen แน่นอน แก้ไขแล้ว
us flag
คุณต้องกำหนดค่า root URL ใหม่ในแอปพลิเคชันของคุณ สำหรับฉัน ความล้มเหลวครั้งที่สองดูเหมือนว่าแอปพลิเคชันของคุณส่งการเปลี่ยนเส้นทางไปยัง `/videos` URI
in flag
คุณพูดถูก มันต้องมีการกำหนดค่าที่ฝั่งแอพ ฉันแก้ไขได้โดยเพิ่ม FORCE_SCRIPT_NAME param ในการตั้งค่าของ Django แม่นยำยิ่งขึ้น ต้องใช้ FORCE_SCRIPT_NAME = '/my_app/' พร้อมเครื่องหมายทับ

โพสต์คำตอบ

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