سؤال

لدينا بلوق أن نستضيف في جيثب مع جيكل. فمن هناك: http://blog.superfeedr.com

وبشكل مثالي، أريد أن تكون على http://superfeedr.com/blog/ لأننا تحتاج إلى إضافة بعض AJAX، ونحن بحاجة لتجنب المشاكل "السياسة المنشأ نفسه".

ونحن نستخدم إنجن إكس على موقعنا على الشبكة العالمية "الرئيسي"، ولدي الإعداد التالية:

location /blog/ {

proxy_pass http://blog.superfeedr.com/;
    proxy_redirect     off;
    proxy_max_temp_file_size 0;

    client_max_body_size       10m;
    client_body_buffer_size    128k;

    proxy_connect_timeout      90;
    proxy_send_timeout         90;
    proxy_read_timeout         90;

    proxy_buffer_size          4k;
    proxy_buffers              4 32k;
    proxy_busy_buffers_size    64k;
    proxy_temp_file_write_size 64k;
}

للأسف، وكما ترون إذا ذهبت إلى http://superfeedr.com/blog/ من الواضح أن هذا لا يعمل. ومن الغريب، ونحن توجيهك إلى موقع جيثب ل.

وPS: من الواضح، أننا يمكن استضافة بلوق على الخادم الرئيسي لدينا، ولكن الهدف من ذلك هو لاستضافة الدورة على مجموعة مختلفة حتى نتمكن من ضمان ذلك تقريبا لتكون على الانترنت إذا كان الموقع هو أسفل ...

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

المحلول

أولا، إنجن إكس لا يرسل رأس المضيف إلى blog.superfeedr.com. وهذا يجعل من إرسال كافة رؤوس المطلوبة:

proxy_set_header   Host                    blog.superfeedr.com;
proxy_set_header   X-Host                 blog.superfeedr.com;
proxy_set_header   X-Real-IP             $remote_addr;
proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;

وثانيا، بعض إعادة كتابة عنوان المطلوب. من قبل بعض الأسباب غريب هذا يعتمد على إصدار إنجن إكس الذي تستخدمه. على أي حال، ل0.6.x (0.6.32 بالنسبة لي) وهذا ينبغي العمل:

    location /blog {
                rewrite  ^/blog(.*)$ /$1 last;
                error_page 402 = @blog;
                return 402;
    }
    location @blog {
        proxy_pass http://blog.superfeedr.com;

        # the rest of proxying parameters should be here

         proxy_set_header   Host                    blog.superfeedr.com;
         proxy_set_header   X-Host                 blog.superfeedr.com;
         proxy_set_header   X-Real-IP $remote_addr;
         proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    }

وتحتاج أيضا لتغطية كافة المسارات تشير بلوق إلى (المغلق والصور وغيرها)، منها مثلا.

location /css {
    error_page 402 = @blog;
    return 402;
}

ل0.7.59:

        location /blog {
                set $blog 1;
                rewrite  ^/blog(.*)$ /$1 last;
        }
        location /css {
                set $blog 1;
                error_page 402 = @blog;
                return 402;
        }
        location / {
                if ($blog) {
                        error_page 402 = @blog;
                        return 402;
                }
                # here is where default settings for / should be
                root /usr/local/www/nginx/;
        }
        location @blog {
                proxy_pass http://blog.superfeedr.com;

                # the rest of proxying parameters should be here

                proxy_set_header   Host                   blog.superfeedr.com;
                proxy_set_header   X-Host                 blog.superfeedr.com;
                proxy_set_header   X-Real-IP $remote_addr;
                proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        }

نصائح أخرى

وهناك طريقة أخرى للقيام بذلك (ولكن دون إشراك إنجن إكس) يمكن أن يكون مع توجيه DNS. وأعتقد أن معظم خدمات DNS تقدم خدمة إلى الأمام URL.

وعلى سبيل المثال، في hover.com، أولا إضافة blog مع التوجيه A إلى 64.99.80.30 ضمن علامة التبويب DNS، ومن ثم في التبويب إلى الأمام، إضافة blog قدما إلى http://superfeedr.com/blog/

في dnsimple.com، انها أكثر بساطة، فقط اضافة التسجيلة blog URL أن تحيل إلى http://superfeedr.com/blog/

وهذه الأمام، وأعتقد، والعمل أيضا لنوع https:// عناوين المواقع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top