استفاده از proxy_set_body در NGINX
شما اگر با NGINX کار کرده باشید، احتمالاً اسم ماژول ngx_http_proxy_module را شنیدهاید. این ماژول به شما اجازه میدهد تا درخواستها را به سرورهای دیگر پروکسی کنید. یکی از ویژگیهای جالب این ماژول، دستور proxy_set_body
است که به شما این امکان را میدهد که بدنهی درخواست (body) را قبل از ارسال به سرور مقصد تغییر دهید.
برای مثال، فرض کنید شما یک اپلیکیشن وب دارید که به یک API ارتباط دارد و میخواهید قبل از اینکه اطلاعات را به سرور API بفرستید، برخی از مقادیر را اصلاح کنید. با استفاده از proxy_set_body
، شما میتوانید این کار را به سادگی انجام دهید.
نحوهی استفاده از این دستور به گونهای است که میتوانید درون بلوک `location`، آن را تعریف کنید. این طبیعتاً به شما این اجازه را میدهد که کنترل بیشتری بر روی درخواستی که به سرور دیگر ارسال میشود، داشته باشید. البته، توجه داشته باشید که این دستور باید بعد از دستورات دیگر پروکسی مانند proxy_pass
قرار بگیرد.
در ادامه به بررسی یک مثال ساده از استفاده از proxy_set_body
خواهیم پرداخت. با استفاده از این مثال، میتوانید به وضوح درک کنید که چگونه میتوانید بدنهی درخواست را تغییر دهید و آن را به سرور مقصد ارسال کنید.
مثال کد
location /api {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_body "{\"key\": \"new_value\"}";
}
توضیح کد
حال با هم به توضیح خطوط کد میپردازیم:
location /api {
این خط مشخص میکند که تنظیمات درون بلاک، برای مسیر /api
اعمال میشود.
proxy_pass http://backend;
در این خط درخواستها به سرور با نام backend
ارسال میشوند.
proxy_set_header Host $host;
این دستور هدر Host
را تنظیم میکند تا نام میزبان صحیح به سرور مقصد ارسال شود.
proxy_set_body "{\"key\": \"new_value\"}";
در اینجا بدنهی درخواست تغییر داده شده و به یک JSON جدید تبدیل میشود که در آن key
مقداری جدید دارد.
به این ترتیب میتوانید به راحتی با استفاده از proxy_set_body
بدنه درخواستها را قبل از ارسال تغییر دهید و با این کار به سادگی مدیریت بهتری بر روی پروکسیها داشته باشید!