Score:0

เปิดใช้งานการรองรับ HTTP/2 ใน apache2 v2.4.25 บน Debian 9.13 แต่การทดสอบไม่รองรับ HTTP/2

ธง ve

ฉันกำลังพยายามกำหนดค่าการสนับสนุน HTTP/2 แต่มีบางอย่างผิดพลาด

เซิร์ฟเวอร์ของฉันคือเครื่องมือคำนวณ Google vm ที่ใช้เซิร์ฟเวอร์ Debian 9.13 (stretch) เวอร์ชัน Apache/2.4.25 พร้อมใบรับรอง SSL ที่กำหนดค่าโดยใช้ OpenSSL เมื่อฉันวิ่ง รุ่น opensl มันรายงานเวอร์ชัน 1.1.1g เมื่อวิ่ง phpinfo(); มันรายงาน OpenSSL/1.0.2u. PHP เวอร์ชัน 7.4.11 และ phpinfo(); ยังรายงาน...

SSL_VERSION_INTERFACE -> mod_ssl/2.4.25
SSL_VERSION_LIBRARY -> OpenSSL/1.0.2u
SSL_PROTOCOL -> TLSv1.2

ฉันทำตามคำแนะนำ ที่นี่ เพื่อ "เปิดใช้งานโมดูล HTTP/2 ใน Apache" และ "เปิดใช้งาน HTTP/2 ในโฮสต์เสมือน Apache ของคุณ" และ ที่นี่. หลังจากทำเช่นนั้นเมื่อฉันเรียกใช้คำสั่ง apache2ctl -M | เกรป http2 มันกลับมา http2_module (แชร์) ซึ่งส่งสัญญาณว่ามีการเปิดใช้งานการสนับสนุน HTTP/2 แต่มันไม่ได้อยู่ในระหว่างการผลิต

นี่คือบรรทัดที่ใช้ในไฟล์คอนฟิกูเรชันโฮสต์เสมือน apache2 ของฉัน /etc/apache2/sites-available/default-ssl.conf

<โฮสต์เสมือน _default_:443>
    โปรโตคอล h2 h2c http/1.1
    ...

นี่คือข้อมูลการเชื่อมต่อโดยละเอียดเมื่อใช้งาน curl -vso http2_debug.log --http2 https://pharealty.com/ คำสั่งที่ดาวน์โหลดหน้าสำเร็จ

* ลอง 35.236.101.224...
* ตั้งค่า TCP_NODELAY
* เชื่อมต่อกับ pharealty.com (35.236.101.224) พอร์ต 443 (#0)
* ALPN ให้บริการ h2
* ALPN ให้บริการ http/1.1
* การเลือกรหัส: ทั้งหมด:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* ตั้งค่าตำแหน่งการตรวจสอบใบรับรองสำเร็จแล้ว:
* ไฟล์ CA: /etc/ssl/certs/ca-certificates.crt
  CApath: /etc/ssl/certs
* TLSv1.2 (ออก), ส่วนหัว TLS, สถานะใบรับรอง (22):
} [ข้อมูล 5 ไบต์]
* TLSv1.2 (ออก), การจับมือ TLS, สวัสดีลูกค้า (1):
} [ข้อมูล 512 ไบต์]
* TLSv1.2 (IN), การจับมือ TLS, สวัสดีเซิร์ฟเวอร์ (2):
{ [ข้อมูล 109 ไบต์]
* TLSv1.2 (IN), การจับมือ TLS, ใบรับรอง (11):
{ [ข้อมูล 4036 ไบต์]
* TLSv1.2 (IN), การจับมือ TLS, การแลกเปลี่ยนคีย์เซิร์ฟเวอร์ (12):
{ [ข้อมูล 333 ไบต์]
* TLSv1.2 (IN), การจับมือ TLS, เซิร์ฟเวอร์เสร็จสิ้น (14):
{ [ข้อมูล 4 ไบต์]
* TLSv1.2 (ออก), การจับมือ TLS, การแลกเปลี่ยนคีย์ไคลเอนต์ (16):
} [ข้อมูล 70 ไบต์]
* TLSv1.2 (ออก), เปลี่ยนรหัส TLS, สวัสดีลูกค้า (1):
} [ข้อมูล 1 ไบต์]
* TLSv1.2 (ออก), การจับมือ TLS, เสร็จสิ้น (20):
} [ข้อมูล 16 ไบต์]
* TLSv1.2 (IN), รหัสเปลี่ยน TLS, สวัสดีลูกค้า (1):
{ [ข้อมูล 1 ไบต์]
* TLSv1.2 (IN), การจับมือ TLS, เสร็จสิ้น (20):
{ [ข้อมูล 16 ไบต์]
* การเชื่อมต่อ SSL โดยใช้ TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ALPN เซิร์ฟเวอร์ที่ยอมรับให้ใช้ http/1.1
* ใบรับรองเซิร์ฟเวอร์:
* เรื่อง: CN=pharealty.com
* วันที่เริ่ม: 10 ก.ค. 01:53:04 น. 2021 GMT
* วันหมดอายุ: 8 ต.ค. 01:53:03 น. 2021 GMT
* subjectAltName: โฮสต์ "pharealty.com" ตรงกับ "pharealty.com" ของใบรับรอง
* ผู้ออก: C=US; O=มาเข้ารหัสกันเถอะ; CN=R3
* ใบรับรอง SSL ตรวจสอบตกลง
} [ข้อมูล 5 ไบต์]
> เก็ท / HTTP/1.1
> โฮสต์: pharealty.com
> ตัวแทนผู้ใช้: curl/7.52.1
> ยอมรับ: */*
>
{ [ข้อมูล 5 ไบต์]
< HTTP/1.1 200 ตกลง
< วันที่: วันพุธที่ 08 กันยายน 2021 17:20:21 GMT
< เซิร์ฟเวอร์: อาปาเช่
< อัพเกรด: h2,h2c
< การเชื่อมต่อ: อัปเกรด
< ตั้งค่าคุกกี้: PHPSESSID=1mv9jqka4n7c7fb6qmtavfsgue; เส้นทาง=/
< หมดอายุ: พฤ. 19 พ.ย. 2524 08:52:00 GMT
< การควบคุมแคช: ไม่มีการจัดเก็บ ไม่มีแคช ต้องตรวจสอบใหม่
< Pragma: ไม่มีแคช
< X-Pingback: https://pharealty.com/xmlrpc.php
< ลิงก์: <https://pharealty.com/wp-json/>; rel="https://api.w.org/"
< ลิงก์: <https://pharealty.com/wp-json/wp/v2/pages/48>; rel="สลับ"; ประเภท = "แอปพลิเคชัน / json"
< ลิงก์: <https://pharealty.com/>; rel=ย่อลิงค์
< ตั้งค่าคุกกี้: phaLandingPage=%2F; หมดอายุ=อ. 08-มี.ค.-2022 17:20:21 GMT; อายุสูงสุด=15638400; เส้นทาง=/
< แตกต่างกันไป: ยอมรับการเข้ารหัส
< การเข้ารหัสการถ่ายโอน: chunked
< ประเภทเนื้อหา: text/html; ชุดอักขระ = UTF-8
<
{ [ข้อมูล 7 ไบต์]
* Curl_http_done: เรียกว่าคลอดก่อนกำหนด == 0
* การเชื่อมต่อ #0 ไปยังโฮสต์ pharealty.com ยังคงอยู่

ดูเหมือนว่าจะทำงานได้อย่างสมบูรณ์ในตอนแรก จากนั้นเปลี่ยนกลับเป็น HTTP/1.1 ในภายหลัง

เท่าที่ฉันสามารถบอกได้ว่าฉันมี OpenSSL เวอร์ชันใหม่เพียงพอแล้ว และแม้ว่า หน้านี้ที่ฉันพูดถึงก่อนหน้านี้ ขอแนะนำเวอร์ชันของ apache ที่สูงกว่า 2.4.25 ฉันไม่สามารถอัปเดต apache เป็นอย่างอื่นได้นอกจาก 2.4.25

ฉันจำเป็นต้องตั้งค่าใบรับรอง SSL ใหม่หลังจากเปลี่ยนหรือไม่ เวอร์ชันของ apache เป็นสาเหตุของปัญหาหรือไม่

ฉันได้ทดสอบเว็บไซต์กับเว็บไซต์ทดสอบ http/2 หลายแห่งและล้มเหลวทุกครั้ง

djdomi avatar
za flag
โปรดอัปเกรดเซิร์ฟเวอร์ของคุณโดยด่วน ยืดเป็น OOS - คุณเปิดใช้งานในทั่วไปหรือเฉพาะบนโฮสต์เฉพาะหรือไม่ ค่าเริ่มต้นไม่ได้หมายความว่ามันใช้งานได้ทั้งหมดโดยทั่วไป
djdomi avatar
za flag
การอัปเดตเพิ่มเติม: ตรวจสอบสถานการณ์ของคุณ: https://www.howtoforge.com/how-to-enable-http-2-in-apache/
hyjinx avatar
ve flag
@djdomi ใช่ ฉันไม่อยากจะเชื่อเลยว่าฉันยังไม่ได้อัปเกรดระบบปฏิบัติการ จัดการเพื่อให้ทุกอย่างทันสมัยอยู่เสมอยกเว้นว่า jeez ฉันกำลังอัปเกรดเป็น Debain 10 buster ฉันควรแก้ไขการกำหนดค่าเพื่อใช้เครื่องหมายดอกจันแทนหรือไม่ ฉันจำไม่ได้ว่าเหตุใดจึงมีการตั้งค่าเป็น ```_default_```
djdomi avatar
za flag
ฉันจะอัปเดตก่อนจากนั้นอัปเกรดและเพิ่มส่วนหัวของโปรโตคอลรวมถึง vhost
hyjinx avatar
ve flag
@djdomi หลังจากอัปเกรดเป็น Debian 10 buster และทำตามขั้นตอนในลิงก์ที่คุณให้มา ฉันก็สามารถทำงานทุกอย่างได้ ฉันพยายามทำให้มันใช้งานได้กับ Debian 10 และ PHP 7.4 แต่ทำไม่ได้ การใช้ PHP 7.3 ใช้งานได้เพราะมี php7.3-fpm แต่หลังจากย้อนกลับไปที่ 7.3 จาก 7.4 ฉันต้องติดตั้งส่วนขยาย PHP ทั้งหมดอีกครั้ง คำสั่งปิดการใช้งาน PHP เปิดใช้งาน PHP-FPM ปิดใช้งาน mpm_prefork และเปิดใช้งาน mpm_event เป็นสิ่งที่สร้างความแตกต่างในการหาทางออกของฉัน หากคุณโพสต์ความคิดเห็นของคุณเป็นคำตอบ ฉันจะตั้งค่าสถานะนั้นเป็นคำตอบและให้คะแนนแก่คุณ
djdomi avatar
za flag
ฉันทำแล้ว โปรดอัปเดตคำถามในกรณีที่คุณยังมีปัญหาอยู่ และใช่ คุณอาจต้องติดตั้งโมดูลที่จำเป็นสำหรับ php แต่ละเวอร์ชันแยกกัน คุณอาจต้องการดู [สคริปต์ไซต์ github ของฉัน](https://raw.githubusercontent .com/djdomi/php-install/master/run.sh) เพื่อติดตั้งโมดูลทั่วไปทั้งหมด
Score:0
ธง za

อัปเกรดเป็นระบบปฏิบัติการที่รองรับ

คุณใช้ Debian Stretch ซึ่งการสนับสนุนหลักคือ IMHO EOL อยู่แล้ว (จุดจบของชีวิต)
แพตช์ความปลอดภัยยังคงมีอยู่จนถึง 2022-06-30.

เปลี่ยนโมดูลการจัดการ Apache

sudo a2dismod mpm_prefork
sudo a2enmod mpm_event

เปิดใช้งานโมดูล SSL & http2

sudo a2enmod ssl  
sudo a2enmod http2  

เปิดใช้งานการรองรับ http2 ทั่วโลกหรือผ่าน vhost

เพิ่มใน Apache2.conf:

โปรโตคอล h2 http/1.1

หรือแก้ไข vhost และเพิ่ม โปรโตคอล h2 http/1.1

<VirtualHost *:443>
  ServerName example.com
  ServerAlias www.example.com
  DocumentRoot /var/www/public_html/example.com
  SSLEngine on
  SSLCertificateKeyFile /path/to/private.pem
  SSLCertificateFile /path/to/cert.pem
  SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
  Protocols h2 http/1.1 #add this here
</VirtualHost>

เตือนให้โหลดเซิร์ฟเวอร์ Apache ใหม่

sudo systemctl รีสตาร์ท apache2

ในการดึง php เวอร์ชันทั้งหมด คุณอาจดูสคริปต์ทุบตีของฉัน

https://raw.githubusercontent.com/djdomi/php-install/master/run.sh

อ้างอิง

เกี่ยวกับ คู่มือนี้

hyjinx avatar
ve flag
ใช่. การอัปเดต Debian แล้วดำเนินการตามขั้นตอนอีกครั้งเป็นเคล็ดลับ ฉันใช้ PHP 7.4 แต่ไม่สามารถใช้งานได้เนื่องจากไม่มีโมดูล php7.4-fpm ให้เปิดใช้งานหลังจากปิดใช้งาน php7.4 ดังนั้นฉันจึงเปลี่ยนกลับเป็น PHP 7.3 และการเปลี่ยนเป็น HTTP/2 ก็เสร็จสมบูรณ์สิ่งเดียวที่ยังคงอยู่คือการติดตั้งส่วนขยาย PHP 7.3 ทั้งหมดที่ฉันขาดหายไป ขณะนี้ไซต์ทดสอบทั้งหมดกำลังทดสอบในเชิงบวกสำหรับ HTTP/2 และคะแนนความเร็วหน้าเว็บบนมือถือเพิ่มขึ้น 12 คะแนนใน Google Page Speed ​​Insights หลังจาก HTTP/2 ขอบคุณสำหรับความช่วยเหลือของคุณ. ฉันไม่อยากจะเชื่อเลยว่าฉันไม่คิดจะอัปเดตระบบปฏิบัติการ
djdomi avatar
za flag
php7. 4-fpm ควรใช้งานได้หลังจากเรียกใช้สคริปต์ของฉัน แน่นอน แม้ว่าฉันจะคิดว่า php8 ด้วยก็ตาม

โพสต์คำตอบ

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