سؤال

لقد قمت بإعداد اثنين من VHosts محلية (HTTP و HTTPs الموقعة ذاتيا) لـ Billing.example.com ومحاولة في Firefox مع Firebug. HTTP VHOST الغرض فقط هو إعادة توجيه جميع الطلبات إلى HTTPS.

في كل مرة أطلب صفحة من HTTPS تقريبًا ، ملف أو ملفان مع الموارد المرتبطة (الصور ، JS ، CSS ، إلخ ...) وأحيانًا تُرجع صفحة PHP نفسها 400 طلب سيء في نافذة Firebug وقت طويل. عند النقر فوق رابط المشكلة في Firebug ، يتم تحميل الملف كما ينبغي. أيضًا ، يتغير الطلب السيئ أو لم يتم تحميل الملفات التي تم تحميلها في كل مرة أقوم فيها بتحميل صفحة.

أيه أفكار؟

الخادم: Ubuntu 10.04 ، Apache/2.2.14 مع mod_ssl

Vhosts:

Listen 80
<VirtualHost *:80>
    ServerName billing.example.com
    UseCanonicalName On
    DocumentRoot /code/site/billing
    ...
    RewriteEngine On
    RewriteRule ^/(.*)$ https://billing.example.com/$1
</VirtualHost>

Listen 443
<VirtualHost *:443>
    ServerName billing.example.com
    UseCanonicalName On
    DocumentRoot /code/site/billing
    ...
    SSLEngine On 
    SSLCertificateFile /code/site/ssl/example.crt
    SSLCertificateKeyFile /code/site/ssl/example.key
</VirtualHost>

REST هي إعدادات افتراضية من Ubuntu Apache2.

هل كانت مفيدة؟

المحلول

كنت أواجه هذه المشكلة مع Apache 2.2.9 والترقية إلى Apache 2.2.22 حل المشكلة بالنسبة لي.

أود الحصول على 400 رموز استجابة عشوائية على بعض طلبات الصفحة. في بعض الأحيان الصور ، وأحيانًا تطلب أياكس. في بعض الأحيان ، ستكون الصفحة نفسها هي التي ستعيد 400 مع هذه الرسالة.

طلب سيئ المستعرض الخاص بك قد أرسل طلبًا بأن هذا الخادم لا يمكنه فهمه. طلب حقل رأس مفقود ":" فاصل. يعيش

لقد وجدت تقرير البساط التالي لذلك يبدو مرتبطًا. تم إصلاح الخطأ في Apache 2.2.15: https://bugzilla.redhat.com/show_bug.cgi؟id=652335

أعتقد أن هذا الخطأ هو سبب الكثير من الأخطاء العشوائية عند استخدام HTTPS: أرسل متصفحك طلبًا بأن هذا الخادم لا يمكنه فهم حقل رأس الطلب ":" فاصل ".

لذلك اعتقدت أنني سأحاول التحديث إلى أحدث Apache مع أحدث MOD_SSL - ويبدو أن ذلك يعمل.

نصائح أخرى

بالنسبة لجزء SSL ، قد ترغب في الدوران UseCanonicalName Off بالنسبة للمضيفين الظاهريين ، من المحتمل أن تستخدم مجالًا مختلفًا عن الخادم الرئيسي وقد يتسبب ذلك في البحث عن ملفات خارج المضيف الظاهري.

للاكتمال في المنفذ 80 ، أود أن أضيف [r ، l] إلى إعادة التوجيه.

RewriteEngine  On
RewriteRule    ^/(.*) http://billing.example.com/$1 [L,R]
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top