تغییر محتوای یک سایت از طریق nginx

تصور کنید یک وب‌سایت دارید که با php کار می‌کند و با استفاده از nginx سرو می‌شود. برای وب‌سایت سرتیفیکیت تهیه کردید اما لینک تصاویر و فایل‌های داخل سایت با پروتکل http جای https شروع میشود و در نتیجه هنگام لود سایت، مرورگرهای جدید محتوایی که با http شروع شوند را بلاک می‌کنند.

راه اول تغییر برنامه‌ست و اینکه کاری کنیم که همه‌ی لینک‌ها با https شروع بشود. اما این روش همیشه مقدور نیست و خیلی وقت‌ها تغییر کد مقدور نیست. اینجاست که nginx و ماژول زیبای nginx_substitutions_filter به کار آدم میاد. با استفاده از این ماجول می‌توانیم هر نوشته‌ای رو قبل از نمایش برای کلاینت تغییر بدهیم.

برای اینکار کافیست در بخش server دو خط زیر رو وارد کنیم. در صورت حذف خط دوم،‌ فقط اولین http  به https تبدیل می‌شود.

 

اما همین دو خط زمانیکه nginx پشت یک لودبالانس مانند haproxy باشد کار نخواهد کرد. برای حل این مشکل کافیست خط زیر رو به کانفیگ nginx در بخش location اضافه نمایید.

 

 

دیدگاه‌ها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *