آشنایی با پارامتر port_in_redirect در NGINX
وقتی که با وبسرور معروف NGINX کار میکنیم، ممکن است با سناریوهایی مواجه شویم که در آنها به تغییرات پیکربندی خاصی نیاز است. یکی از این تغییرات مهم، مدیریت ریدایرکتها و ترسیم آدرسهای URL با استفاده از پورتهاست. بهطور ویژه، پارامتر port_in_redirect
در ماژول ngx_http_core_module
به ما این امکان را میدهد که کنترلی بر نحوهی نمایش پورتها در ریدایرکتها داشته باشیم.
این پارامتر بهطور پیشفرض به on
تنظیم شده است، که به این معناست که NGINX در ریدایرکتهایش پورت جاری را در URL نهایی که به کاربر برمیگردد نشان میدهد. این رفتار میتواند تغییر کند و به حالت off
برگردد؛ در این حالت، پورت در URL نمایش داده نمیشود. بهعبارت دیگر، اگر ریدایرکت به یک آدرس IP یا نام دامنه با پورت خاصی انجام شود، با تنظیم این پارامتر میتوان تعیین کرد که آیا پورت در آدرس نهایی گنجانده شود یا خیر.
فرض کنید که شما وبسایتی دارید که با استفاده از پورت 8080 بر روی سرور شما اجرا میشود. اگر کاربری به آدرس http://example.com
مراجعه کند و شما بخواهید این درخواست را به http://example.com:8080
ریدایرکت کنید، با استفاده از port_in_redirect
میتوانید این کار را به راحتی انجام دهید. اگر این پارامتر را off
کنید، استفاده از پورت 8080 در ریدایرکتها نادیده گرفته خواهد شد.
استفاده از این ویژگی میتواند برای کاربرانی که نمیخواهند پورتها در URL نهایی نشان داده شوند، بسیار مفید باشد. در برخی موارد، حذف پورت از URL میتواند به بهبود تجربه کاربری و افزایش زیبایی URLها کمک کند. همچنین وقتی که شرایط خاص SSL و HTTPS وجود دارد، مدیریت پورتها میتواند در کاهش پیچیدگیها کمک کند.
کد مثال استفاده از port_in_redirect
server {
listen 80;
server_name example.com;
# فعال کردن port_in_redirect
port_in_redirect on;
location / {
return 301 http://example.com:8080$request_uri;
}
}
توضیحات کد
server {
بخش آغازین تعریف یک سرور جدید در NGINX.
listen 80;
تنظیم NGINX برای گوش دادن به پورت 80.
server_name example.com;
مشخص کردن نام دامنه که این سرور برای آن تنظیم شده است.
port_in_redirect on;
فعالسازی نمایش پورت در ریدایرکتها.
location / {
تعریف یک مکان خاص (در این مثال همه نشانهگذاریها) برای مدیریت ریدایرکتها.
return 301 http://example.com:8080$request_uri;
ایجاد یک ریدایرکت دائمی به URL جدید که شامل پورت 8080 است.
}
بخش انتهایی کدهای موقعیت.