تصور کنید یک وبسایت دارید که با php کار میکند و با استفاده از nginx سرو میشود. برای وبسایت سرتیفیکیت تهیه کردید اما لینک تصاویر و فایلهای داخل سایت با پروتکل http جای https شروع میشود و در نتیجه هنگام لود سایت، مرورگرهای جدید محتوایی که با http شروع شوند را بلاک میکنند.
راه اول تغییر برنامهست و اینکه کاری کنیم که همهی لینکها با https شروع بشود. اما این روش همیشه مقدور نیست و خیلی وقتها تغییر کد مقدور نیست. اینجاست که nginx و ماژول زیبای nginx_substitutions_filter به کار آدم میاد. با استفاده از این ماجول میتوانیم هر نوشتهای رو قبل از نمایش برای کلاینت تغییر بدهیم.
برای اینکار کافیست در بخش server دو خط زیر رو وارد کنیم. در صورت حذف خط دوم، فقط اولین http به https تبدیل میشود.
1 2 3 |
sub_filter ‘http://’ ‘https://’; sub_filter_once off; |
اما همین دو خط زمانیکه nginx پشت یک لودبالانس مانند haproxy باشد کار نخواهد کرد. برای حل این مشکل کافیست خط زیر رو به کانفیگ nginx در بخش location اضافه نمایید.
1 |
proxy_set_header Accept–Encoding “”; |
دیدگاهتان را بنویسید