إنجن إكس وكيل لصفحة جيثب؟
سؤال
لدينا بلوق أن نستضيف في جيثب مع جيكل. فمن هناك: 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://
عناوين المواقع.