خانه Easy Apache 4 وب سرور Easy Apache معرفی و آشنایی با Apache Module mod_ proxy_fcgi

معرفی و آشنایی با Apache Module mod_ proxy_fcgi

4 دقیقه خوانده شده
۰
0
45
proxy_fcgi

به دنبال هاست خوب هستید؟ با چیتاهاست بهترین ارائه دهنده هاست های لینوکس و ویندوز و سرور مجازی همراه باشید همچنین در ادامه با Apache Module mod_ proxy_fcgi آشنا میشوید.

Apache Module mod_ proxy_fcgi

شرح :  ماژول پشتیبانی FastCGI برای mod_proxy

وضعیت : توسعه

شناسه ماژول :  proxy_fcgi_module

فایل منبع :  mod_proxy_fcgi.c

سازگاری : موجود در نسخه ۲٫۳ و نسخه های  بعد

خلاصه

ماژول mod_ proxy_fcgi نیاز به سرویس  mod_proxy دارد. این پشتیبانی از پروتکل FastCGI را فراهم می کند. بنابراین، به منظور توانایی مدیریت پروتکلFastCGI ، mod_ proxy  و  mod_ proxy_fcgi باید در سرور حضور داشته باشند.

برخلاف  mod_fcgid و  mod_fastcgi ، mod_ proxy_fcgi هیچ پیشنهادی برای شروع  روند برنامه ندارد؛ fcgistarter (در برخی از سیستم عامل ها) برای این منظور ارائه شده است. در عوض، راه اندازی خارجی یا مدیریت فرآیند ممکن است در چارچوب استفاده ی برنامه FastCGI در دسترس باشد.

هشدار

تا سرور خود را امن نکرده اید ( secured your server  )، پروکسی را فعال نکنید. سرورهای پروکسی باز برای شبکه اینترنت  خطرناک هستند.

مثال ها

به یاد داشته باشید، برای اینکه نمونه های زیر را انجام دهید، باید  mod_proxy و  mod_ proxy_fcgi را فعال کنید.

نمونه ی کاربردی واحد

ProxyPass "/myapp/" "fcgi://localhost:4000/"

mod_proxy_fcgi به طور پیش فرض استفاده ی مجدد از اتصال را غیر فعال می کند، بنابراین بعد از تکمیل درخواست، ارتباط توسط httpd child process  برقرار نخواهد شد و استفاده مجدد نخواهد شد. اگر برنامه FastCGI بتواند اتصالات همزمان از httpd را مدیریت کند، شما می توانید  استفاده مجدد از اتصال را همانطور که در مثال زیر نشان داده شده انتخاب کنید:

نمونه تک درخواست، استفاده مجدد از اتصال (۲٫۴٫۱۱ و بعد از آن)

 مطالب مرتبط: آشنایی با Apache Module mod_cgi

ProxyPass "/myapp/" "fcgi://localhost:4000/" enablereuse=on

مثال زیر از URI درخواست به عنوان یک مسیر فایل سیستم برای اجرای PHP-FPM daemon عبور می کند. URL درخواست به طور ضمنی به پارامتر ۲ اضافه می شود. نام میزبان (host  ) و پورت زیر  fcgi:// جایی است که PHP-FPM در حال گوش دادن است . اتصال pooling/reuse فعال است.

PHP-FPM

ProxyPassMatch "^/myapp/.*\.php(/.*)?$" "fcgi://localhost:9000/var/www/" enablereuse=on

مثال زیر از URI درخواست به عنوان یک مسیر فایل سیستم برای اجرای daemon PHP-FPM عبور می کند. در این مورد، PHP-FPM در حال گوش کردن به یک سوکت دامنه یونیکس ( UDX ) است . نیاز به نسخه ی ۲٫۴٫۹ یا بالاتر دارد.  به این نحو، نام میزبان و پورت اختیاری زیر fcgi: // نادیده گرفته می شود.

PHP-FPM with UDS

ProxyPassMatch "^/(.*\.php(/.*)?)$" "unix:/var/run/php5-fpm.sock|fcgi://localhost/var/www/"

دروازه متعادل به  mod_proxy_balancer  نیاز دارد و حداقل یک ماژول الگوریتم متعادل کننده بار، مانند  mod_lbmethod_byrequests، علاوه بر پروکسی  ماژولها ، در بالا ذکر شده است mod_lbmethod_byrequests به طور پیش فرض است، و برای پیکربندی این مثال استفاده می شود.

دروازه متعادل برای موارد چند برنامه

 

ProxyPass "/myapp/" "balancer://myappcluster/"

<Proxy "balancer://myappcluster/">

    BalancerMember "fcgi://localhost:4000"

    BalancerMember "fcgi://localhost:4001"

</Proxy>

شما همچنین می توانید یک درخواست را، با ایجاد یک Handler مناسب pass-through مجبور کنید به عنوان درخواست reverse-proxy (معکوس پروکسی) به کار گرفته شود.   پیکربندی در مثال زیر، تمام درخواست ها برای اسکریپت های PHP را به سرور مشخص شده ی FastCGI با استفاده از پروکسی معکوس منتقل می کند .  این ویژگی در سرور آپاچی HTTP Server 2.4.10 و نسخه های بعد از آن در دسترس است. به دلایل کارایی، شما می خواهید یک worker نشان دهنده  fcgi: // backend را تعریف و معین کنید.   مزیت این فرم این است که اجازه می دهد نقشه برداری عادی URI به نام filename در سرور رخ دهد،  و نتیجه فایل سیستم محلی به backend منتقل  شود . هنگامی که FastCGI به این شیوه پیکربندی شده است، سرور می تواند PATH_INFO را دقیق تر محاسبه کند.

پروکسی از طریق Handler

 

<FilesMatch "\.php$">

   

# توجه: تنها بخشی که تغییر می کند، /path/to/app.sock است

    SetHandler  "proxy:unix:/path/to/app.sock|fcgi://localhost/"

</FilesMatch>



<Proxy "fcgi://localhost/" enablereuse=on max=10>

</Proxy>

# تعریف کارگر مطابق.

# بخشی که با SetHandler سازگار است بخشی از آن است

# دنبال لوله است اگر شما نیاز به تمایز، “localhost؛ می توانید

# هر چیزی منحصر به فرد باشد

<FilesMatch ...>

    SetHandler  "proxy:fcgi://localhost:9000"

</FilesMatch>

<FilesMatch ...>

    SetHandler  "proxy:balancer://myappcluster/"

</FilesMatch>

متغیرهای محیطی

علاوه بر دستورالعمل های پیکربندی که رفتار mod_proxy را کنترل می کنند، تعدادی متغیر محیطی  (  environment variables  ) که پروتکل ارائه دهنده FCGI را کنترل می کنند وجود دارد:

proxy-fcgi-pathinfo

هنگام تنظیم از طریق ProxyPass یا  ProxyPassMatch صورت می گیرد ،  mod_proxy_fcgiمتغیر محیط PATH_INFO را تنظیم نخواهد کرد. این اجازه می دهد تا سرور FCGI backend به درستی    SCRIPT_NAMEو Script-URI   را تعیین کند و Script-URI و سازگار با RFC 3875 بخش ۳٫۳ باشد. اگر به جای  mod_proxy_fcgi برای ایجاد “بهترین حدس” به PATH_INFO نیاز دارید، این env-var را تنظیم کنید. این یک راه حل برای یک اشکال در برخی از پیاده سازی  های FCGI است. این متغیر را می توان به مقادیر مختلفی تنظیم کرد تا در نحوه ی انتخاب بهترین حدس tweak  کند (تنها در ورژن ۲٫۴٫۱۱ و ورژن های بعد آن):

first-dot

PATH_INFO از اسلش زیرین بعد از اولین “.” در URL  تقسیم شده است.

last-dot

PATH_INFO از اسلش زیرین بعد از اولین “.” در URL  تقسیم شده است.

Full

PATH_INFO با یک تلاش برای طراحی URL به فایل سیستم محلی محاسبه می شود.

Unescape

PATH_INFO جزء مسیر URL است، unscaped / decoded شده است.

any other value

PATH_INFO همانند جزء مسیر URL است. در اصل، این تنها گزینه ی proxy-fcgi-pathinfo بود.

 

ProxyFCGIBackendType Directive

 

شرح : نوع برنامه FastCGI Backend را مشخص کنید .

نحوه :   ProxyFCGIBackendType FPM|GENERIC

پیش فرض :       ProxyFCGIBackendType FPM

متن : پیکربندی سرور ، virtual host ، دایرکتوری ، .htaccess

وضعیت : توسعه

ماژول : mod_ proxy_fcgi

سازگاری : موجود در نسخه ۲٫۴٫۲۶ و نسخه های بعد از آن

 

این دستورالعمل اجازه می دهد تا نوع برنامه Backed FastCGI مشخص شود.    بعضی از سرورهای FastCGI، مانند PHP-FPM، از پیشینه تاریخی متغیرهای محیطی برای شناسایی نوع سرور مورد استفاده ، استفاده می کنند. این دستورالعمل را به «GENERIC» تنظیم کنید، اگر برنامه غیر PHP-FPM شما با تفسیر متغیرهای محیطی مانند SCRIPT_FILENAME یا PATH_TRANSLATED که توسط سرور تنظیم شده است، مشکل ایجاد کند.

 

یک مثال از مقادیری که براساس تنظیمات این دستورالعمل تغییر می کند SCRIPT_FILENAME است. هنگام استفاده از  mod_ proxy_fcgi از لحاظ تاریخی، SCRIPT_FILENAME با رشته “proxy: fcgi: //” پیشوند بود. این متغیر همان چیزی است که برخی از برنامه های کاربردی FastCGI عمومی به عنوان ورودی اسکریپت آنها خوانده می شوند، اما PHP-FPM پیشوند را محدود می کند.

در ۲٫۴٫۲۱ از طریق ۲٫۴٫۲۵، این پیشوند به صورت خودکار توسط سرور خاتمه یافته است، شکستن توانایی PHP-FPM برای شناسایی و تعامل با Apache در برخی از سناریوها.

دستورالعمل ProxyFCGISetEnvIf

 

شرح : متغیرهایی که به سرورهای FastCGI فرستاده می شود،

 

نحوه :                           ProxyFCGISetEnvIf conditional-expression [!]environment-variable-name [value-expression]

متن :  پیکربندی سرور ، virtual host ، دایرکتوری ، .htaccess

وضعیت : توسعه

ماژول : mod_ proxy_fcgi

سازگاری :

موجود در نسخه ۲٫۴٫۲۶ و نسخه های بعد از آن

 

 

درست قبل از ارسال یک درخواست به سرور FastCGI پیکربندی شده، هسته وب سرور تعدادی متغیر محیطی را بر اساس جزئیات درخواست فعلی تنظیم می کند. برنامه های  FastCGI اغلب از این متغیرهای محیطی به عنوان ورودی ها استفاده می کند که تعیین می کند کدام اسکریپت های اساسی در آنها پردازش می کنند یا چه خروجی هایی  آنها را به طور مستقیم تولید می کنند.

مثال هایی از متغیرهای محیطی  قابل توجه عبارتند از:

  • SCRIPT_NAME
  • SCRIPT_FILENAME
  • REQUEST_URI
  • PATH_INFO
  • PATH_TRANSLATED

این دستورالعمل اجازه می دهد که متغیرهای محیطی در بالا یا هرکدام از موارد مورد علاقه، مورد بازنویسی قرار گیرند. این دستورالعمل بعد از مقادیر اولیه برای این متغیرها تعیین می شود، بنابراین می توان آنها را به عنوان ورودی به عبارات شرط و عبارات ارزش مورد استفاده قرار داد.

نحوه ی  پارامتر:

conditional-expression (بیان شرطی )

یک عبارت را مشخص می کند که کنترل می کند که آیا متغیر محیطی که دنبال می شود اصلاح می شود. برای اطلاعات در مورد نحوه ی  بیان، نمونه هایی را که دنبال می کنند و یا مشخصات کامل در اسناد  ap_expr را ببینید.

Environment-variable-name (محیط نام متغیر)

متغیر محیطی CGI را برای تغییر، مانند PATH_INFO مشخص می کند. اگر قبل از نقطه علامت تعجب پیش برود، متغیر از بین می رود.

Value-expression (بیان ارزش)

مقدار جایگزینی را برای متغیر محیط قبلی تعیین می کند. Backreferences ، مانند “$ ۱″، می توانند از ضبط عبارات منظم در عبارت شرطی (conditional-expression ) شامل شوند. در صورت حذف، متغیر (یا overriden) به یک رشته خالی تنظیم می شود – اما نکته زیر را مشاهده کنید.

لغو اساسی و بی قید و شرط#

ProxyFCGISetEnvIf "true" PATH_INFO "/example"

# از یک متغیر محیطی در مقدار استفاده کنید

ProxyFCGISetEnvIf "true" PATH_INFO "%{reqenv:SCRIPT_NAME}"

# استفاده از ضبط در شرایط و backreference در جایگزین

ProxyFCGISetEnvIf "reqenv('PATH_TRANSLATED') =~ m|(/.*prefix)(\d+)(.*)|" PATH_TRANSLATED "$1$3"

توجه: جاگذاری نشده در حالت تهی

در زیر گزینه VARIABLE را غیر فعال می کند و از ارسال آن به سرور FastCGI جلوگیری می کند:

ProxyFCGISetEnvIf true !VARIABLE

در حالی که در زیر هر مقدار موجودی VARIABLE را پاک می کند (با تنظیم آن به رشته خالی)، اما VARIABLE خالی همچنان به سرور ارسال می شود:

ProxyFCGISetEnvIf true VARIABLE

خصوصیات CGI / 1.1 بین متغیری با مقدار خالی و یک متغیر که وجود ندارد تعریف نمی کند ( does not distinguish). با این حال، بسیاری از پیاده سازی های CGI و FastCGI (یا اجازه می دهد اسکریپت ها را برای تشخیص و تمیز دادن) بین این دو را جدا سازی می کنند. انتخاب اینکه کدام یک را استفاده  کنید ، بستگی به اجرای شما و دلیل شما برای تغییر متغیر است.

بارگذاری نوشته های مرتبط بیشتر
مطالب بیشتر از این نویسنده مرجان کاظمی
  • proxy

    آشنایی و معرفی Apache Module mod_ proxy

    در این بخش به طور کامل با Apache Module mod_ proxy آشنا می شوید. همچنین اگر قصد خرید هاست …
  • MPM

    معرفی و آشنایی با Apache MPM prefork

    دوستان عزیزی که قصد خرید هاست لینوکس ویندوز و سرور مجازی را دارند با چیتاهاست همراه باشند …
  • headers

    آشنایی با Apache Module mod_ headers

    چیتاهاست بهترین ارائه دهنده سرور های مجازی هاست لینوکس ویندوزَ و هاست نرم افزاری می باشد ب…
بارگذاری بیشتر در وب سرور Easy Apache

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

بررسی کنید

آشنایی و معرفی Apache Module mod_ proxy

در این بخش به طور کامل با Apache Module mod_ proxy آشنا می شوید. همچنین اگر قصد خرید هاست …