برای این کار باید از Reverse Proxy استفاده کنید. بدین صورت که تعیین میکنید برای مثال تمام درخواست هایی که از پورت ۸۰ به سرور می رسد، باید از پورت ۳۰۰۰ داخل سرور گذر کنند.

برای اینکار ابتدا وارد فایل کانفیگ nginx شوید. این فایل به صورت پیش فرض در مسیر زیر قرار دارد :

/etc/nginx/sites-available/default

هر سرور شما با بلاک server مشخص می شود. پس برای ساخت یک سرور جدید ابتدا یک بلاک سرور به کد اضافه کنید:

server {
        listen 80;
        listen [::]:80;
}

همانطور که مشاهده می کنید سرور در حال حاضر به درخواست هایی که از پورت ۸۰ دریافت می شود پاسخ خواهد داد. هم در ip نسخه ۴ و هم در ip نسخه ۶.

حال باید مشخص کنیم درخواست هایی که به ریشه سرور ارسال می شود، چگونه باید پردازش شوند:

location / {
    proxy_pass http://127.0.0.1:3000;
}

همانطور که مشاهده می کنید ، تمام درخواست هایی که به ریشه سرور ارسال شده است را به پورت ۳۰۰۰ در ip لوکال منتقل میکنیم.

حال ، برای دیباگ کردن ، لاگ ها را نیز اضافه کنید:

access_log /var/log/nginx/reverse-access.log;
error_log /var/log/nginx/reverse-error.log;

کد کامل تنظیمات nginx رو می توانید در زیر ببینید:‌

server {
        listen 80;
        listen [::]:80;

        access_log /var/log/nginx/reverse-access.log;
        error_log /var/log/nginx/reverse-error.log;

        location / {
                    proxy_pass http://127.0.0.1:3000;
  }
}

با اجرای دستور زیر میتوانید بررسی کنید که آیا فایل تنظیمات به درستی نوشته شده است یا نه :

nginx -t

و در آخر سرویس nginx را ری استارت کنید:

sudo systemctl restart nginx.service

بعد از اجرای برنامه node (یا هر سرور دیگری) در پورت ۳۰۰۰ ، تمام ریکویست های پورت ۸۰ توسط این سرور پردازش خواهد شد.این کار توسط Reverse Proxy انجام می شود.

 

تنظیمات بیشتر

همچنین شما می توانید تنظیماتی بیشتری نیز به فایل تنظیمات خود اضافه کنید:

تنظیم نسخه http:

proxy_http_version  1.1;

تنظیمات بای پس کردن کش :

proxy_cache_bypass  $http_upgrade;

اگه از وب سوکت استفاده میکنید :

proxy_set_header Upgrade           $http_upgrade

تنظیم هدر هاست :‌

proxy_set_header Host              $host;

لیست آیپی تمام پراکسی ها :

proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;

هدر آدرس آیپی بازدید کننده :‌

proxy_set_header X-Real-IP         $remote_addr;

هدر آدرس هاست اصلی‌:

proxy_set_header X-Forwarded-Host  $host;

هدر آدرس پورت اصلی‌ :

proxy_set_header X-Forwarded-Port  $server_port;

 

نسخه کامل تر فایل تنظیمات ‌:

server {
        listen 80;
        listen [::]:80;

        access_log /var/log/nginx/reverse-access.log;
        error_log /var/log/nginx/reverse-error.log;

        location / {
        proxy_pass http://127.0.0.1:3000;
            proxy_http_version  1.1;
            proxy_cache_bypass  $http_upgrade;
        
            proxy_set_header Upgrade           $http_upgrade;
            proxy_set_header Connection        "upgrade";
            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;
            proxy_set_header X-Forwarded-Host  $host;
            proxy_set_header X-Forwarded-Port  $server_port;
  }
}

 

دسته بندی شده در:

برچسب ها:

, , , ,