ฉันใช้ apache2 บนเซิร์ฟเวอร์ Debian 10
ฉันมี virtualhost สำหรับหนึ่งในโดเมนย่อยที่ฉันมี ฉันมีปัญหาที่หากเปิดใช้งาน virtualhost ของโดเมนย่อย ให้ไปที่ Broadcastre.cc
จะแสดงเนื้อหาของ smf.broadcastre.cc
(โฮสต์เสมือน)
นี่ไม่ได้ตั้งใจและความช่วยเหลือใด ๆ เกี่ยวกับปัญหานี้จะได้รับการชื่นชม
การกำหนดค่าโฮสต์เสมือนของฉัน
root@server1:~# cat /etc/apache2/sites-available/smf.conf
<โฮสต์เสมือน *:80>
ServerAdmin <อีเมลถูกซ่อน>
ชื่อเซิร์ฟเวอร์ smf.broadcastre.cc
ServerAlias www.smf.broadcastre.cc
DocumentRoot /var/www/smf
DirectoryIndex index.php
<ไดเร็กทอรี /var/www/smf>
ดัชนีตัวเลือก FollowSymLinks MultiViews
AllowOverride ทั้งหมด
คำสั่งอนุญาตปฏิเสธ
อนุญาตจากทั้งหมด
</ไดเร็กทอรี>
<FilesMatch \.php$>
# สำหรับ Apache เวอร์ชัน 2.4.10 ขึ้นไป ให้ใช้ SetHandler เพื่อเรียกใช้ PHP เป็นเซิร์ฟเวอร์กระบวนการ fastCGI
SetHandler "proxy:unix:/run/php/php5.6-fpm.sock|fcgi://localhost"
</FilesMatch>
บันทึกข้อผิดพลาด ${APACHE_LOG_DIR}/smf.broadcastre.cc_error.log
รวมบันทึก ${APACHE_LOG_DIR}/smf.broadcastre.cc_access.log ที่กำหนดเอง
</เวอร์ชวลโฮสต์>
การกำหนดค่าสำหรับ Broadcastre.cc
root@server1:~# cat /etc/apache2/sites-enabled/default-ssl.conf
<IfModule mod_ssl.c>
<โฮสต์เสมือน _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
# loglevels ที่มีอยู่: trace8, ..., trace1, debug, ข้อมูล, ประกาศ, เตือน,
# ข้อผิดพลาด วิกฤต การแจ้งเตือน เกิดขึ้น
# นอกจากนี้ยังสามารถกำหนดค่าล็อกระดับโดยเฉพาะได้
# โมดูล เช่น
#ข้อมูล LogLevel ssl:warning
บันทึกข้อผิดพลาด ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log รวมกัน
# สำหรับไฟล์การกำหนดค่าส่วนใหญ่จาก conf-available/ ซึ่งได้แก่
# เปิดใช้งานหรือปิดใช้งานในระดับโลกก็เป็นไปได้
# รวมบรรทัดสำหรับโฮสต์เสมือนหนึ่งรายการเท่านั้น ตัวอย่างเช่น
# บรรทัดต่อไปนี้เปิดใช้งานการกำหนดค่า CGI สำหรับโฮสต์นี้เท่านั้น
# หลังจากถูกปิดใช้งานทั่วโลกด้วย "a2disconf"
#รวม conf-available/serve-cgi-bin.conf
# สวิตช์เครื่องยนต์ SSL:
# เปิด / ปิด SSL สำหรับโฮสต์เสมือนนี้
SSLEngine เปิดอยู่
# สามารถสร้างใบรับรองที่ลงนามเอง (snakeoil) ได้โดยการติดตั้ง
# แพ็คเกจ ssl-cert ดู
# /usr/share/doc/apache2/README.Debian.gz สำหรับข้อมูลเพิ่มเติม
# หากทั้งคีย์และใบรับรองถูกจัดเก็บไว้ในไฟล์เดียวกัน เฉพาะไฟล์
# จำเป็นต้องมีคำสั่ง SSLCertificateFile
SSLCertificateFile /root/.acme.sh/broadcastre.cc/broadcastre.cc.cer
SSLCertificateKeyFile /root/.acme.sh/broadcastre.cc/broadcastre.cc.key
# เชนใบรับรองเซิร์ฟเวอร์:
# ชี้ SSLCertificateChainFile ที่ไฟล์ที่มีไฟล์
# การต่อใบรับรอง CA ที่เข้ารหัส PEM ซึ่งเป็นรูปแบบ
# สายใบรับรองสำหรับใบรับรองเซิร์ฟเวอร์ อีกทางหนึ่ง
# ไฟล์อ้างอิงสามารถเหมือนกับ SSLCertificateFile
# เมื่อเพิ่มใบรับรอง CA เข้ากับเซิร์ฟเวอร์โดยตรง
#ใบรับรองเพื่อความมั่นใจ
#SSLCertificateChainFile /etc/apache2/ssl.crt/server-ca.crt
# ผู้ออกใบรับรอง (CA):
# กำหนดเส้นทางการตรวจสอบใบรับรอง CA ที่จะค้นหา CA
# ใบรับรองสำหรับการรับรองความถูกต้องของไคลเอนต์หรืออีกทางเลือกหนึ่ง
# ไฟล์ขนาดใหญ่ที่มีทั้งหมด (ไฟล์ต้องเข้ารหัส PEM)
# หมายเหตุ: ภายใน SSLCACertificatePath คุณต้องมีแฮช symlink
# เพื่อชี้ไปที่ไฟล์ใบรับรอง ใช้ที่ให้มา
# Makefile เพื่ออัปเดตแฮช symlink หลังจากการเปลี่ยนแปลง
#SSLCACertificatePath /etc/ssl/certs/
#SSLCACertificateFile /etc/apache2/ssl.crt/ca-bundle.crt
# รายการเพิกถอนใบรับรอง (CRL):
# กำหนดเส้นทางการเพิกถอน CA ที่จะค้นหา CA CRL สำหรับลูกค้า
# การรับรองความถูกต้องหรืออีกทางเลือกหนึ่งคือไฟล์ขนาดใหญ่ที่มีทั้งหมด
# ของพวกเขา (ไฟล์ต้องเข้ารหัส PEM)
# หมายเหตุ: ภายใน SSCARevocationPath คุณต้องมีแฮช symlink
# เพื่อชี้ไปที่ไฟล์ใบรับรอง ใช้ที่ให้มา
# Makefile เพื่ออัปเดตแฮช symlink หลังจากการเปลี่ยนแปลง
#SSLCARevocationPath /etc/apache2/ssl.crl/
#SSLCARevocationFile /etc/apache2/ssl.crl/ca-bundle.crl
# การรับรองความถูกต้องไคลเอนต์ (ประเภท):
# ประเภทการตรวจสอบใบรับรองไคลเอ็นต์และความลึก ประเภทได้แก่
# ไม่มี, ไม่บังคับ, ต้องการ และ option_no_ca ความลึกคือ
# หมายเลขที่ระบุความลึกในการตรวจสอบใบรับรอง
# ห่วงโซ่ผู้ออกก่อนที่จะตัดสินว่าใบรับรองไม่ถูกต้อง
#SSLVerifyClient ต้องการ
#SSLVerifyความลึก 10
# ตัวเลือกเครื่องยนต์ SSL:
# ตั้งค่าตัวเลือกต่างๆสำหรับเครื่องยนต์ SSL
# o FakeBasicAuth:
# แปลไคลเอนต์ X.509 เป็นการให้สิทธิ์ขั้นพื้นฐาน นี่หมายความว่า
# สามารถใช้เมธอด Auth/DBMAuth มาตรฐานสำหรับการควบคุมการเข้าถึงได้ เดอะ
ชื่อผู้ใช้ # เป็นเวอร์ชัน `หนึ่งบรรทัด' ของใบรับรอง X.509 ของไคลเอ็นต์
# โปรดทราบว่าไม่ได้รับรหัสผ่านจากผู้ใช้ ทุกรายการในผู้ใช้
# ไฟล์ต้องการรหัสผ่านนี้: `xxj31ZMTZzkVA'
# o ส่งออกใบรับรองข้อมูล:
# สิ่งนี้ส่งออกตัวแปรสภาพแวดล้อมเพิ่มเติมสองตัว: SSL_CLIENT_CERT และ
# SSL_SERVER_CERT เหล่านี้ประกอบด้วยใบรับรองที่เข้ารหัส PEM ของ
# เซิร์ฟเวอร์ (มีอยู่เสมอ) และไคลเอนต์ (มีอยู่เฉพาะเมื่อไคลเอนต์
# ใช้การรับรองความถูกต้อง) สามารถใช้นำเข้าใบรับรองได้
# เป็นสคริปต์ CGI
# o StdEnvVars:
# สิ่งนี้ส่งออกตัวแปรสภาพแวดล้อม `SSL_*' ที่เกี่ยวข้องกับ SSL/TLS มาตรฐาน
# ตามค่าเริ่มต้น การส่งออกนี้ถูกปิดเนื่องจากเหตุผลด้านประสิทธิภาพ
# เนื่องจากขั้นตอนการสกัดเป็นการดำเนินการที่มีราคาแพงและโดยปกติแล้ว
# ไม่มีประโยชน์สำหรับการให้บริการเนื้อหาคงที่ ดังนั้นจึงมักจะเปิดใช้งาน
# การส่งออกสำหรับคำขอ CGI และ SSI เท่านั้น
# o เลือกเจรจาใหม่:
# สิ่งนี้เปิดใช้งานการจัดการการเจรจาต่อรองการเชื่อมต่อ SSL ที่ปรับให้เหมาะสมเมื่อ SSL
# คำสั่งใช้ในบริบทต่อไดเรกทอรี
#SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<ไดเรกทอรี /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</ไดเร็กทอรี>
# การปรับโปรโตคอล SSL:
# การปิดระบบที่ปลอดภัยและเป็นค่าเริ่มต้น แต่ยังคงเป็นไปตามมาตรฐาน SSL/TLS
# วิธีคือ mod_ssl ส่งการแจ้งเตือนการปิด แต่ไม่รอ
# ปิดการแจ้งเตือนจากลูกค้า เมื่อคุณต้องการปิดเครื่องอื่น
# วิธีการ คุณสามารถใช้หนึ่งในตัวแปรต่อไปนี้:
# o ssl-ไม่สะอาด-ปิด:
# สิ่งนี้บังคับให้ปิดเครื่องที่ไม่สะอาดเมื่อปิดการเชื่อมต่อ เช่น ไม่
# การแจ้งเตือนการปิด SSL ถูกส่งหรืออนุญาตให้ได้รับ สิ่งนี้ฝ่าฝืน
# มาตรฐาน SSL / TLS แต่จำเป็นสำหรับเบราว์เซอร์ที่สมองตาย ใช้
# สิ่งนี้เมื่อคุณได้รับข้อผิดพลาด I/O เนื่องจากแนวทางมาตรฐานโดยที่
# mod_ssl ส่งการแจ้งเตือนปิด
# o ssl-ถูกต้องปิด:
# สิ่งนี้บังคับให้ปิดเครื่องอย่างถูกต้องเมื่อปิดการเชื่อมต่อ เช่น
# การแจ้งเตือนการปิด SSL ถูกส่งและ mod_ssl รอการแจ้งเตือนการปิด
#แจ้งเตือนลูกค้า. เป็นไปตามมาตรฐาน SSL/TLS 100% แต่ใน
การฝึกฝน # มักจะทำให้เกิดการเชื่อมต่อกับเบราว์เซอร์ที่สมองตาย ใช้
# นี้สำหรับเบราว์เซอร์ที่คุณรู้ว่ามีการใช้ SSL เท่านั้น
#ทำงานถูกต้อง
# ข้อสังเกต: ปัญหาส่วนใหญ่ของไคลเอนต์ที่เสียยังเกี่ยวข้องกับ HTTP
# สิ่งอำนวยความสะดวกในการช่วยชีวิต ดังนั้นคุณมักจะต้องการปิดการใช้งานเพิ่มเติม
#รักษาชีวิตสำหรับลูกค้าเหล่านั้นด้วย ใช้ตัวแปร "nokeepalive" สำหรับสิ่งนี้
# ในทำนองเดียวกัน เราต้องบังคับให้ลูกค้าบางรายใช้ HTTP/1.0 เพื่อแก้ปัญหา
# การใช้งาน HTTP/1.1 ที่เสียหาย ใช้ตัวแปร "downgrade-1.0" และ
# "force-response-1.0" สำหรับสิ่งนี้
# BrowserMatch "MSIE [2-6]" \
# nokeepalive ssl-ไม่สะอาด-ปิด \
# ปรับลด -1.0 บังคับให้ตอบสนอง -1.0
<IfModule mod_expires.c>
หมดอายุเปิดใช้งานเมื่อ
ExpiresByType ข้อความ/css A31536000
ExpiresByType text/x-component A31536000
แอปพลิเคชัน ExpiresByType/x-javascript A31536000
แอปพลิเคชัน ExpiresByType/จาวาสคริปต์ A31536000
ExpiresByType ข้อความ/จาวาสคริปต์ A31536000
ExpiresByType ข้อความ/x-js A31536000
ExpiresByType ข้อความ/html A3600
ExpiresByType ข้อความ/richtext A3600
ข้อความ ExpiresByType/ธรรมดา A3600
ข้อความ ExpiresByType/xsd A3600
ExpiresByType ข้อความ/xsl A3600
ExpiresByType ข้อความ/xml A3600
วิดีโอ ExpiresByType/ASF A31536000
วิดีโอ ExpiresByType/avi A31536000
ภาพ ExpiresByType/bmp A31536000
แอปพลิเคชัน ExpiresByType/java A31536000
วิดีโอ ExpiresByType/divx A31536000
แอปพลิเคชัน ExpiresByType/msword A31536000
ExpiresByType รูปภาพ/gif A31536000
แอปพลิเคชัน ExpiresByType/x-gzip A31536000
รูปภาพ ExpiresByType/x-icon A31536000
ExpiresByType ภาพ/jpeg A31536000
รูปภาพ ExpiresByType/webp A31536000
แอปพลิเคชัน ExpiresByType/json A31536000
ExpiresByType เสียง/มิดี้ A31536000
วิดีโอ ExpiresByType/quicktime A31536000
ExpiresByType เสียง/mpeg A31536000
ExpiresByType วิดีโอ/mp4 A31536000
ExpiresByType วิดีโอ/mpeg A31536000
วิดีโอ ExpiresByType/webm A31536000
แอปพลิเคชัน ExpiresByType/x-font-otf A31536000
ExpiresByType เสียง/ogg A31536000
แอปพลิเคชัน ExpiresByType/pdf A31536000
ExpiresByType ภาพ/png A31536000
ExpiresByType เสียง/x-realaudio A31536000
ภาพ ExpiresByType/svg+xml A31536000
แอปพลิเคชัน ExpiresByType/x-shockwave-flash A31536000
แอปพลิเคชัน ExpiresByType/x-tar A31536000
รูปภาพ ExpiresByType/tiff A31536000
แอปพลิเคชัน ExpiresByType/x-font-ttf A31536000
ExpiresByType เสียง/wav A31536000
ExpiresByType เสียง/wma A31536000
แอปพลิเคชัน ExpiresByType/font-woff A31536000
แอปพลิเคชัน ExpiresByType/font-woff2 A31536000
แอปพลิเคชัน ExpiresByType/zip A31536000
</หากโมดูล>
นามแฝง /mail /usr/share/roundcube
</เวอร์ชวลโฮสต์>
</หากโมดูล>
# เป็นกลุ่ม: ไวยากรณ์=apache ts=4 sw=4 sts=4 sr noet
แก้ไข: การเปิด Broadcastre.cc
ด้วยพอร์ต 443 แทนที่จะเป็น 80 จะแก้ไขปัญหานี้ ฉันถือว่านี่เป็นเพราะมันฟังใน 443 ไม่ใช่ 80 (ขอบคุณ little_toasted ที่ชี้ให้เห็นสิ่งนี้)