ดังนั้นฉันจึงพยายามดูว่าฉันสามารถตั้งค่าส่วนหัวการตอบสนองโดยกำหนดค่าใน Apache ได้หรือไม่
ฉันใช้การทดสอบ Debian ในกรณีที่สำคัญ
เว็บเซิร์ฟเวอร์ของฉันทำงานอยู่ และฉันใช้มันกับเว็บไซต์หลายแห่งที่ฉันกำลังพัฒนา ตอนนี้สิ่งที่ฉันต้องการทำคือตั้งค่าส่วนหัวเพื่อดูว่าใช้งานได้หรือไม่
นี่คือสิ่งที่ฉันเปลี่ยนใน apache.conf ของฉัน
<Directory /home/web>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
Header set myHeader "Hello Header World"
</Directory>
นี่คือสิ่งที่ฉันโฮสต์ไฟล์การกำหนดค่าใน /etc/apache2/sites-available/000-default.conf ดูเหมือนว่า:
<โฮสต์เสมือน *:80>
# คำสั่ง ServerName ตั้งค่ารูปแบบคำขอ ชื่อโฮสต์ และพอร์ตที่
# เซิร์ฟเวอร์ใช้เพื่อระบุตัวเอง สิ่งนี้ใช้เมื่อสร้าง
# URL การเปลี่ยนเส้นทาง ในบริบทของโฮสต์เสมือน ชื่อเซิร์ฟเวอร์
# ระบุชื่อโฮสต์ที่ต้องปรากฏในส่วนหัวของคำขอ Host:
# ตรงกับโฮสต์เสมือนนี้ สำหรับโฮสต์เสมือนเริ่มต้น (ไฟล์นี้) สิ่งนี้
# ค่าไม่ได้ชี้ขาดเนื่องจากใช้เป็นทางเลือกสุดท้ายโฮสต์โดยไม่คำนึงถึง
# อย่างไรก็ตาม คุณต้องตั้งค่าสำหรับโฮสต์เสมือนเพิ่มเติมอย่างชัดเจน
#ชื่อเซิร์ฟเวอร์ www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /บ้าน/เว็บ
AliasMatch ^/vmapi/(.*)$ /home/web/vmapi/api_receiver.php
AliasMatch ^/inherentvalue/api/(.*)$ /home/web/inherentvalue/api/api.php
# loglevels ที่มีอยู่: trace8, ..., trace1, debug, ข้อมูล, ประกาศ, เตือน,
# ข้อผิดพลาด วิกฤต การแจ้งเตือน เกิดขึ้น
# นอกจากนี้ยังสามารถกำหนดค่าล็อกระดับโดยเฉพาะได้
# โมดูล เช่น
#ข้อมูล LogLevel ssl:warning
บันทึกข้อผิดพลาด ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log รวมกัน
ตำแหน่งที่ตั้งส่วนหัว "juancito"
ส่วนหัวตั้งตำแหน่ง "pedrito"
Header ตั้งค่า MyHeader "สวัสดี Joe Apache ใช้เวลา %D ไมโครวินาทีในการตอบสนองคำขอนี้"
# สำหรับไฟล์การกำหนดค่าส่วนใหญ่จาก conf-available/ ซึ่งได้แก่
# เปิดใช้งานหรือปิดใช้งานในระดับโลกก็เป็นไปได้
# รวมบรรทัดสำหรับโฮสต์เสมือนหนึ่งรายการเท่านั้น ตัวอย่างเช่น
# บรรทัดต่อไปนี้เปิดใช้งานการกำหนดค่า CGI สำหรับโฮสต์นี้เท่านั้น
# หลังจากถูกปิดใช้งานทั่วโลกด้วย "a2disconf"
#รวม conf-available/serve-cgi-bin.conf
</เวอร์ชวลโฮสต์>
# เป็นกลุ่ม: ไวยากรณ์=apache ts=4 sw=4 sts=4 sr noet
มีนามแฝงสำหรับโปรเจ็กต์อื่น ฉันกำลังดำเนินการอยู่
ผลลัพธ์ของ apache2ctl -M มีลักษณะดังนี้:
โหลดโมดูล:
core_module (คงที่)
so_module (คงที่)
watchdog_module (คงที่)
http_module (คงที่)
log_config_module (คงที่)
logio_module (คงที่)
version_module (คงที่)
unixd_module (คงที่)
access_compat_module (แชร์)
alias_module (แชร์)
auth_basic_module (แชร์)
authn_core_module (แชร์)
authn_file_module (แชร์)
authz_core_module (แชร์)
authz_host_module (แชร์)
authz_user_module (แชร์)
autoindex_module (แชร์)
deflate_module (ใช้ร่วมกัน)
dir_module (แชร์)
env_module (แชร์)
filter_module (แชร์)
headers_module (แชร์) <-- เปิดใช้งานแล้ว
mime_module (แชร์)
mpm_prefork_module (แชร์)
โมดูลการเจรจาต่อรอง (ใช้ร่วมกัน)
php_module (แชร์)
reqtimeout_module (แชร์)
rewrite_module (แชร์)
setenvif_module (แชร์)
status_module (แชร์)
ดังนั้นฉันจึงลองคำสั่งต่อไปนี้:
curl -i -s -k -v -X รับ "http://localhost/vmportal/css"
และผลลัพธ์คือ:
HTTP/1.1 301 ย้ายอย่างถาวร
วันที่: วันพุธที่ 24 พฤศจิกายน 2021 06:32:01 GMT
เซิร์ฟเวอร์: Apache/2.4.48 (เดเบียน)
ที่ตั้ง: http://localhost/vmportal/css/
ความยาวเนื้อหา: 313
ประเภทเนื้อหา: text/html; ชุดอักขระ=iso-8859-1
<!DOCTYPE HTML สาธารณะ "-//IETF//DTD HTML 2.0//EN">
<html><หัวเรื่อง>
<title>301 ย้ายอย่างถาวร</title>
</หัว><ตัว>
<h1>ย้ายอย่างถาวร</h1>
<p>เอกสารได้ย้ายไป <a href="http://localhost/vmportal/css/">ที่นี่</a></p>
<ชั่วโมง>
<ที่อยู่>เซิร์ฟเวอร์ Apache/2.4.48 (Debian) ที่พอร์ต localhost 80</address>
</body></html>
ฉันไม่ควรเห็นส่วนหัวใด ๆ ที่ฉันตั้งไว้ในการตอบกลับหรือไม่
ใครช่วยบอกฉันทีว่าฉันทำอะไรผิด? หรือปัญหาคืออะไร? หรือแม้แต่วิธีการแก้ไขข้อบกพร่อง? (ไม่มีอะไรในบันทึกข้อผิดพลาดหรือบันทึกการเข้าถึง ในกรณีที่คุณสงสัย)