ฉันมี 3 แอปพลิเคชันที่แตกต่างกันที่ปรับใช้บนเซิร์ฟเวอร์เดียวกัน แต่ละพอร์ตที่แตกต่างกัน
- แอปพลิเคชัน java API หนึ่งรายการที่ทำงานบนไดเร็กทอรีพอร์ต 8080 (/บ้าน/api/)
- เว็บแอป nextjs ที่สองทำงานบนไดเร็กทอรีพอร์ต 3000 (/บ้าน/เว็บ)
- แอปพลิเคชันแผงควบคุม vuejs ที่สามบนพอร์ตเริ่มต้น 80 ที่ปรับใช้ภายในไดเร็กทอรีย่อย (/var/www/html/admin)
นี่คือไฟล์กำหนดค่า apache test.conf
ชื่อเซิร์ฟเวอร์ www.test.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
บันทึกข้อผิดพลาด ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log รวมกัน
# ตั้งค่าพร็อกซีย้อนกลับสำหรับเซิร์ฟเวอร์ทั้งหมด
ProxyPreserveHost เปิด
ProxyPass /admin http://localhost/admin
ProxyPassReverse /admin http://localhost/admin
ProxyPass /api http://localhost:8080/api
ProxyPassReverse /api http://localhost/api
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost/
API ทำงานได้ดีที่ http://test.com/api URL.
เว็บไซต์ยังทำงานได้ดีที่ http://test.com URL.
ปัญหาเกิดขึ้นเมื่อฉันเข้าใช้ http://test.com/admin URL.
มันแสดงข้อผิดพลาดต่อไปนี้ในเบราว์เซอร์:-
เบราว์เซอร์ของคุณส่งคำขอที่เซิร์ฟเวอร์นี้ไม่เข้าใจ ขนาดของฟิลด์ส่วนหัวของคำขอเกินขีดจำกัดของเซิร์ฟเวอร์
ด้วยรหัสสถานะ 400 คำขอไม่ถูกต้อง และถ้าฉันลบออก ผู้ดูแลระบบ แผงจากพร็อกซีย้อนกลับและสร้างไฟล์ vhost อื่นด้วยการกำหนดค่าอย่างง่ายด้านล่าง:-
นี่เป็นไฟล์ปรับแต่ง apache vhost อีกไฟล์หนึ่ง ทดสอบ-admin.conf
ชื่อเซิร์ฟเวอร์ www.test.com
ServerAdmin webmaster@localhost
รูทเอกสาร /var/www/html/
#ข้อมูล LogLevel ssl:warning
บันทึกข้อผิดพลาด ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log รวมกัน
<ไดเรกทอรี /var/www/html/admin>
ดัชนีตัวเลือก FollowSymLinks
AllowOverride ทั้งหมด
ต้องได้รับอนุญาตทั้งหมด
คำสั่งอนุญาตปฏิเสธ
อนุญาตจากทั้งหมด
</ไดเรกทอรี>
จากนั้น URL อื่นจะหยุดทำงาน 404 ไม่พบ ข้อผิดพลาด.
บันทึก:- www.test.com เป็นเพียงการแสดงชื่อโดเมนหรือ IP จริง