اموزش راه اندازی Reverse-Proxy در Nginx

اموزش راه اندازی Reverse-Proxy در Nginx

0 111
Telegram_GEEKBOY

همراهان عزیز گیگ بوی در ادامه آموزش قبلی بعد از نصب Nginx در Ubuntu میریم سر وقت آموزش راه اندازی Reverse-proxy در Ngnix

برای دیدن اموزش قبلی : آموزش نصب وب سرور nginx در لینوکس ubuntu میتوانید از این لینک استفاده نمایید

 

بریم برای آموزش راه اندازی Reverse-proxy در Ngnix ابتدا لازم است توضیح بدهیم که reverse-proxy چیست؟

همانطور که در اموزش نصب Nginx در Ubuntu گفتیم مراحل بعدی از آموزش ها نصب و راه اندازی Reverse-proxy در Nginx می باشد. برای آشنایی با Reverse-proxy میتوانید به این لینک مراجعه نمایید.

همان طور که در لینک بالا نوشته شده است مزایای استفاده از Reverse-proxy عبارت است از:

Load Balancing
Protection from attacks
Caching
SSL encryption

و البته چندین مورد دیگه نیز می باشد که امروز فقط به راه اندازی Reverse-proxy بسنده میکنیم

برای استفاده از هرکدام از قابلیت های Reverse-proxy ابتدا باید اون رو روی یکی از وب سرور ها لود بالانسر های مورد نظر آن راه اندازی کنیم !

جالبه بدونید مکانیزم کار کردن 99% از راهکار های امنیتی تحت وب ( لایه 7 ) همین Reverse-proxy هست ( اکامای، کلادفیلر، اروان کلاد، و حتی دستگاه های امنیتی مانند Fortiweb و F5 و….)

خوب برای راه اندازی Reverse-proxy در Nginx ما ابتدا باید فایل کانفیگ مربوط به Vhost (جایی که تعریف میکنیم دامنه ما چی هست و چه پایلیسی میخوایم برای اون دامنه داشته باشیم) رو ویرایش کنیم

با دستور زیر فایل رو باز میکنیم:

nano /etc/nginx/sites-enabled/default

فایل ما به صورت دیفالت به شکل زیر هست :

reverse-proxy

ما تمام محتویات این فایل رو پاک میکنیم و از اول خودمون میسازیمش ! برای این مورد فقط کافی هست ctrl+k رو نگه دارید تا محتویات پاک شود

حالا که تمام محتویات فایل ما پاک شد عبارت زیر رو در درون فایل مورد نظر میریزیم ، برای این منظور ابتدا محتویات رو در Notepad روی سیستم خودتون کپی کنید و بسته به نیازتون اون رو ویرایش کنید ( در ادامه توضح داده میشه )

server {
listen 80;
server_name geekboy.pro www.geekboy.pro;

location / {
proxy_pass http://real-server-ip;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}

}

reveres

همون طور که در این عکس و متن مشخص شده شما فقط نیاز دارید تا 2 مورد server_name و proxy_pass رو تغییر بدید

برای server_name باید تمامی دامنه هایی که میخواهید از reverse-proxy استفاده بشه رو تنها با یک فاصله وارید کنید (مانند شکل بالا geekboy.pro www.geekboy.pro)

و برای عبارت proxy_pass هم باید ای پی سرور اصلی که این دامنه یا ساب دامنه(ها) روی اون هستند رو وارد کنید برای مثال ای پی سرور سایت اینجا 10.20.30.40 هست که ما ای پی رو به همراه http اضافه کردیم

در این مورد Reverse-proxy ما فقط بر روی پروتکل http کار میکند

خوب فایل رو ذخیره میکنیم ctrl+x و سپس y و enter میزنیم تا فایل ذخیره شود

سپس با دستور زیر چک مینماییم که آیا فایل را درست ویرایش کردیم یا خیر

nginx -t

خروجی باید به این صورت باشد :

root@geekboy:~# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

reverse-proxy

بعد از اینکه خروجی بدستور بالا درست بود با دستور زیر وب سرور nginx رو restart میکنیم تا تغییرات اعمال شود

systemctl restart nginx

راه اندازی SSL بر روی Reverse-Proxy

خوب اگر سایت ما قبلا از SSL یا https استفاده کرده است ما باید HTTPS رو در Reverse-Proxy هم راه اندازی نماییم

همچنین اگر نرم افزار شما قدیمی می باشد یا امکان راه اندازی SSL رو ندارید میتوانید با راهکار زیر به راحتی سایتتون رو HTTPS نمایید بدون هیچ گونه تغییری در سرور اصلی !

خوب برای راه اندازی HTTPS یا SSL ما باید فایل Config vhost را که بالا توضیح دادیم ویرایش کنیم

با دستور زیر فایل را باز میکنیم :

nano /etc/nginx/sites-enabled/default

و تمام محتویات را با ctrl+k پاک میکنیم

سپس محتویات زیر را بسته به نیاز ویرایش مینماییم و داخل فایل  config میریزیم :

server {
listen 80;
return 301 https://$host$request_uri;
}

server {

listen 443 ssl;
server_name geekboy.pro www.geekboy.pro;

ssl_certificate /etc/nginx/ssl/geekboy-public-key.crt;
ssl_certificate_key /etc/nginx/ssl/geekboy-private-key.key;

location / {
proxy_pass https://10.20.30.40;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

 

در اینجا هم همانند بالا فقط نیاز هست server_name و proxy_pass ویرایش شود

برای server_name باید تمامی دامنه هایی که میخواهید از reverse-proxy استفاده بشه رو تنها با یک فاصله وارید کنید (مانند شکل بالا geekboy.pro www.geekboy.pro)

و برای عبارت proxy_pass هم باید ای پی سرور اصلی که این دامنه یا ساب دامنه(ها) روی اون هستند رو وارد کنید برای مثال ای پی سرور سایت اینجا 10.20.30.40 می باشد که ما ای پی رو به همراه HTTP اضافه کردیم و یک نکته که اگر سرور اصلی قبلا هم در حال سرویس دهی رو روی HTTPS بوده باید اول عبارت HTTPS بزاریم و اگر قبلا بر روی HTTP در حال سرویس دهی بوده HTTP میزاریم

server {
listen 80;
return 301 https://$host$request_uri;
}

در این قسمت ما هر درخواستی که HTTP هست را به HTTPS ریدایرکت شود

ssl_certificate در این قسمت ادرس فایل public-key ssl را آپلود شده را میدهیم

ssl_certificate_key این قسمت آدرس فایل private-key ssl را آپلود شده را میدهیم

 

بقیه موارد نیز توضیح داده شد ، در اخر فایل کانفیگ ما به شکل زیر در میاد :

reverse-proxy

سپس فایل را با ctrl+x و سپس y و بعد از اون با زدن enter ذخیره مینماییم.

سپس با دستور زیر چک میکنیم که فایل را درست ادیت کردیم یا خیر

nginx -t

خروجی باید به صورت زیر باشد:

root@geekboy:~# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

reverse-proxy

بعد از اینکه خروجی بدستور بالا درست بود با دستور زیر وب سرور nginx رو restart میکنیم تا تغییرات اعمال بشه

systemctl restart nginx

 

حالا فقط لازم هست تا ما ترافیک ورودی وب سایت یا سامانه خودمون رو به سمت IP سرور Reverse-Proxy منتقل کنیم (با تغییر DNS) تا تمام ترافیک از سرور nginx ما رد بشه و پالیسی هایی که در قیمت های بعدی اموزش داده میشه اعمال بشه

 

با ادامه آموزش های ما در گیگ بوی همراه باشید : آموزش اینده: ( مسدود سازی شبکه تور )

 

ارسال یک نظر

آدرس ایمیل شما منتشر نخواهد شد.

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.