Apache + PHP-FPM = ngẫu nhiên Lỗi phân tích cú pháp phân tích cú pháp tiêu đề Tập lệnh + Lỗi lỗi phân đoạn


8

Tôi đã thiết lập PHP-FPM với Apache 2.4 bằng proxy_fcgi, tất cả đều hoạt động tốt, nhưng cứ sau 4 - 6 yêu cầu, Apache lại trả về một trang trống. Điều này xảy ra trên trang web chính của tôi http://danielhe.com/ , nhưng không phải là vhost tên miền phụ.

Điều này hiển thị nhật ký lỗi của Apache, [client x] AH01070: Lỗi phân tích cú pháp tiêu đề tập lệnh

Và cuối cùng, đôi khi Apache phân tách AH00052: con pid 9740 thoát tín hiệu Lỗi phân đoạn (11)

Tôi có thể dễ dàng tái tạo "Lỗi phân tích cú pháp tiêu đề" bằng cách làm mới trang một vài lần, nhưng lỗi seg xảy ra ngẫu nhiên sau một vài "Lỗi phân tích cú pháp tiêu đề"

Cập nhật Tôi đã tìm thấy một bản sửa lỗi cho các lỗi seg và WSOD rõ ràng đã tự sửa. mod_deflate có một số vấn đề, nhưng cấu hình này từ tài liệu Apache đã sửa nó

SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# Don't compress images
SetEnvIfNoCase Request_URI \
\.(?:gif|jpeg|jpg|png)$ no-gzip dont-vary
# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary

2
Bạn nên trả lời câu hỏi của riêng mình và đánh dấu nó là một câu trả lời được chấp nhận để làm cho câu hỏi này trông giống như một câu trả lời
regilero

Câu trả lời:


2

Giải pháp là sử dụng cấu hình này

SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# Don't compress images
SetEnvIfNoCase Request_URI \
\.(?:gif|jpeg|jpg|png)$ no-gzip dont-vary
# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary

Bạn có chắc chắn rằng vấn đề là trong mod_deflate? Bất kỳ tài liệu tham khảo? Trông rất lạ ...
GioMac

@GioMac: Tôi không biết - OP nói rằng đó là điều đã giải quyết vấn đề trong câu hỏi. Tôi chỉ cần đặt nó trong một câu trả lời. Lưu ý rằng SO đã gửi nó cho chúng tôi và nó đã được trả lời ban đầu vào ngày 9 tháng 3 năm 2012.
user9517

0

Tôi có thể xác nhận giải pháp trên có hiệu quả với tôi nhưng tôi cũng phải sửa các cài đặt ProxyPassmatch của mình.

Cấu hình cũ

<IfModule proxy_module>
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/home/YOURDOMAIN/public_html/$1
</IfModule>

Cấu hình mới - bộ lọc viết lại khác nhau, cộng với mã từ bên trên

<IfModule proxy_module>
ProxyPassMatch ^(.*\.php)$ fcgi://127.0.0.1:9000/home/YOURDOMAIN/public_html/$1
</IfModule>

<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
...code from above
</IfModule>

0

Vấn đề ở đây là phản hồi từ phpList không điền vào một gói đầy đủ. php-fpm ngắt kết nối với Apache sớm nếu phản hồi của nó không lấp đầy ít nhất một bộ đệm. Để giải quyết vấn đề, bạn có thể tạm thời chuyển sang mod_php hoặc loại bỏ phản hồi bằng một số văn bản được tạo ngẫu nhiên.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.