TINYPROXY.CONF(5) Tinyproxy manual TINYPROXY.CONF(5)

tinyproxy.conf - فایل پیکربندی دیمن پروکسی HTTP با نام Tinyproxy

tinyproxy.conf

tinyproxy(8) فایل پیکربندی خود را که معمولاً در `/etc/tinyproxy/tinyproxy.conf` ذخیره شده است (یا از طریق خط فرمان با -c به Tinyproxy داده می‌شود) می‌خواند. این صفحه راهنما نحو و محتویات این فایل پیکربندی را شرح می‌دهد.

فایل پیکربندی Tinyproxy شامل جفت‌های کلید-مقدار است، هر کدام در یک خط. خطوطی که با `#` شروع می‌شوند و خطوط خالی، توضیح (کامنت) به شمار رفته و نادیده گرفته می‌شوند. کلمات کلیدی به حروف بزرگ و کوچک حساس نیستند (case-insensitive)، در حالی که مقادیر به حروف حساس هستند (case-sensitive). همان‌طور که در ادامه اشاره شده است، برخی از مقادیر رشته‌ای باید در میان علامت نقل‌قول دوتایی (") قرار گیرند.

کلمات کلیدی ممکن و توضیحات آن‌ها به شرح زیر است:

کاربری که فرایند Tinyproxy باید پس از پیوند اولیه به پورت (port-binding) که توسط کاربر `root` انجام می‌شود، تحت آن اجرا شود. می‌توان نام کاربری یا شناسه کاربری (UID) را مشخص کرد.
گروهی که فرایند Tinyproxy باید پس از پیوند اولیه به پورت که توسط کاربر `root` انجام می‌شود، تحت آن اجرا شود. می‌توان نام گروه یا شناسه گروه (GID) را مشخص کرد.
پورتی که سرویس Tinyproxy روی آن به اتصالات گوش فرا می‌دهد. اگر شماره پورت کمتر از 1024 باشد، باید فرایند Tinyproxy را به عنوان کاربر `root` راه‌اندازی کنید.
به‌طور پیش‌فرض، Tinyproxy برای اتصالات روی تمام رابط‌های شبکه موجود گوش می‌دهد (یعنی روی آدرس عمومی `0.0.0.0`). با استفاده از این پارامتر پیکربندی، می‌توان تعیین کرد که Tinyproxy تنها روی یک آدرس مشخص گوش فرا دهد.
به شما امکان می‌دهد مشخص کنید Tinyproxy برای اتصالات خروجی به کدام آدرس متصل (bind) شود. این پارامتر را می‌توان چندین بار مشخص کرد که در این صورت Tinyproxy تمام آدرس‌های مشخص‌شده را به ترتیب امتحان می‌کند.
اگر این پارامتر بولی روی `yes` تنظیم شود، Tinyproxy اتصال خروجی را به آدرس IP اتصال ورودی که باعث ایجاد درخواست خروجی شده است، پیوند (bind) می‌زند.
حداکثر مدت زمان بر حسب ثانیه که یک اتصال مجاز است در حالت عدم فعالیت (inactivity) بماند، پیش از آن‌که توسط Tinyproxy بسته شود.
این پارامتر کنترل می‌کند که هنگام وقوع یک خطای HTTP مشخص، Tinyproxy کدام فایل HTML را بازگرداند. این گزینه دو آرگومان می‌پذیرد: شماره خطا و مکان فایل HTML خطا. مکان فایل را در علامت نقل‌قول دوتایی قرار دهید.
فایل قالب HTML که هنگام وقوع خطایی که فایل خطای اختصاصی برای آن تعیین نشده است، بازگردانده می‌شود. آن را در علامت نقل‌قول دوتایی قرار دهید.
نام میزبان یا آدرس IP که به عنوان `میزبان آمار` (stat host) در نظر گرفته می‌شود. آن را در علامت نقل‌قول دوتایی قرار دهید. هر زمان که Tinyproxy درخواستی برای `میزبان آمار` دریافت کند، به‌جای هدایت درخواست به آن میزبان، یک صفحه آمار داخلی بازمی‌گرداند. قالب این صفحه را می‌توان با گزینه پیکربندی `StatFile` تنظیم کرد. مقدار پیش‌فرض `StatHost` برابر `tinyproxy.stats` است.
فایل HTML که Tinyproxy در پاسخ به یک درخواست برای `میزبان آمار` ارسال می‌کند. آن را در علامت نقل‌قول دوتایی قرار دهید. اگر این پارامتر تنظیم نشود، Tinyproxy یک صفحه آمار پایه و درون‌برنامه‌ای (hard-coded) را بازمی‌گرداند. برای جزئیات به بخش STATHOST در صفحه راهنمای tinyproxy(8) مراجعه کنید.

توجه داشته باشید که StatFile و فایل‌های خطای پیکربندی‌شده با ErrorFile و DefaultErrorFile فایل‌های قالبی هستند که می‌توانند شامل چند متغیر قالب باشند که Tinyproxy پیش از ارسال آن‌ها را بسط می‌دهد (expand می‌کند). به عنوان مثال "{cause}" برای شرح مختصر خطا و "{detail}" برای پیام خطای دقیق است. صفحه راهنمای tinyproxy(8) شامل شرح تمامی متغیرهای قالب است.

مکان فایلی که Tinyproxy خروجی اشکال‌زدایی (debug) خود را در آن می‌نویسد. آن را در علامت نقل‌قول دوتایی قرار دهید. به عنوان روش جایگزین، Tinyproxy می‌تواند پیام‌ها را در syslog ثبت کند -- گزینه Syslog را ببینید.
وقتی روی `On` تنظیم شود، این گزینه به Tinyproxy می‌گوید پیام‌های اشکال‌زدایی خود را به‌جای فایل لاگ پیکربندی‌شده با `LogFile` در syslog بنویسد. این دو گزینه مانعةالجمع (mutually exclusive) هستند.
سطح گزارش‌گیری (log level) را تعیین می‌کند. پیام‌های مربوط به سطح تعیین‌شده و بالاتر ثبت می‌شوند. برای مثال، اگر LogLevel روی Warning تنظیم شود، تمام پیام‌های لاگ از Warning تا Critical ثبت خواهند شد، اما پیام‌های Notice و پایین‌تر نادیده گرفته می‌شوند. مقادیر مجاز عبارتند از:
  • Critical (کم‌ترین جزئیات)
  • Error
  • Warning
  • Notice
  • Connect (ثبت اتصالات بدون حواشی سطح Info)
  • Info (بیشترین جزئیات)
مکان فایلی که فرایند اصلی Tinyproxy شناسه فرایند (PID) خود را برای اهداف ارسال سیگنال در آن ذخیره می‌کند. آن را در علامت نقل‌قول دوتایی قرار دهید.
تنظیم این گزینه روی `Yes` به Tinyproxy اعلام می‌کند که یک هدر به نام `X-Tinyproxy` حاوی آدرس IP کلاینت به درخواست اضافه کند.
این گزینه به شما امکان می‌دهد مجموعه‌ای از قوانین را بر اساس میزبان یا دامنه سایتی که به آن دسترسی پیدا می‌شود، برای تصمیم‌گیری در مورد استفاده از یک سرور پروکسی بالادستی (upstream proxy server) تنظیم کنید. قوانین به ترتیبی که در فایل پیکربندی آمده‌اند ذخیره می‌شوند و آخرین قاعده منطبق اعمال می‌گردد. اشکال زیر برای تعیین قوانین بالادستی وجود دارند:
  • upstream type host:port پشتیبانی از پروکسی بالادستی را به‌صورت عمومی فعال می‌کند.
  • upstream type user:pass@host:port همان کار را انجام می‌دهد، اما از اطلاعات کاربری ارائه‌شده برای احراز هویت استفاده می‌کند.
  • upstream type host:port "site_spec" پروکسی بالادستی را برای سایت‌هایی که با `site_spec` مطابقت دارند فعال می‌کند.

    `type` می‌تواند یکی از مقادیر `http`، `socks4`، `socks5`، `none` باشد.

    یک `site_spec` یا نام کامل دامنه است، یا نام دامنه‌ای که با `.` شروع می‌شود (که در این صورت به عنوان پسوند در نظر گرفته می‌شود)، یا یک جفت ip/mask است. `site_spec` باید در میان علامت نقل‌قول دوتایی قرار گیرد.

  • upstream none "site_spec" پشتیبانی بالادستی را برای سایت‌های منطبق با `site_spec` غیرفعال می‌کند؛ بدین معنی که اتصال به‌صورت مستقیم برقرار می‌شود.

توصیه می‌شود برای تعیین میزبان بالادستی از آدرس‌های IP خام استفاده شود تا نیازی به جستجوی پرهزینه DNS در هر بار استفاده نباشد. آدرس‌های IPv6 باید در قلاب [] قرار گیرند.

سایت را می‌توان به اشکال مختلف به عنوان نام میزبان، نام دامنه یا محدوده IP مشخص کرد:

  • name دقیقاً با میزبان مطابقت پیدا می‌کند
  • .name با هر میزبانی در دامنه "name" مطابقت پیدا می‌کند
  • . با هر میزبانی بدون دامنه (در دامنه 'خالی') مطابقت پیدا می‌کند
  • IP/bits با network/mask مطابقت پیدا می‌کند
  • IP/mask با network/mask مطابقت پیدا می‌کند

توجه داشته باشید که دستورالعمل upstream می‌تواند برای پوچ‌مسیردهی (null-route) یک دامنه/میزبان هدف مشخص نیز استفاده شود، مانند: `upstream http 0.0.0.0:0 ".adserver.com"`

برنامه Tinyproxy برای هر کلاینت متصل‌شده یک ریسه (thread) ایجاد می‌کند. این گزینه حداکثر مطلق تعداد فرایندهایی را که ایجاد خواهند شد مشخص می‌کند. به عبارت دیگر، تنها MaxClients کلاینت می‌توانند به‌طور هم‌زمان به Tinyproxy متصل باشند.
گزینه‌های `Allow` و `Deny` ابزاری برای سفارشی‌سازی این‌که کدام کلاینت‌ها مجاز به دسترسی به Tinyproxy هستند فراهم می‌کنند. خطوط `Allow` و `Deny` را می‌توان چندین بار مشخص کرد تا فهرست کنترل دسترسی برای Tinyproxy ساخته شود. ترتیب قرارگیری در فایل پیکربندی مهم است. اگر هیچ خط `Allow` یا `Deny` وجود نداشته باشد، دسترسی تمام کلاینت‌ها مجاز است. در غیر این صورت، اقدام پیش‌فرض رد دسترسی است. آرگومان `Allow` یا `Deny` می‌تواند یک آدرس IP تکی از میزبان کلاینت مانند `127.0.0.1` یا `::1`، یک محدوده آدرس IP مانند `192.168.0.1/24`، یا رشته‌ای باشد که با انتهای نام میزبان کلاینت تطبیق داده می‌شود؛ یعنی می‌تواند یک نام کامل میزبان مانند `host.example.com` یا یک نام دامنه مانند `.example.com` یا حتی یک نام دامنه سطح بالا مانند `.com` باشد. توجه داشته باشید که با افزودن قاعده‌ای با استفاده از نام میزبان یا دامنه، برای هر اتصال جدید باید یک جستجوی نام (name lookup) پرهزینه انجام شود که می‌تواند سرعت سرویس را به میزان قابل توجهی کاهش دهد.
نام کاربری و گذرواژه "احراز هویت پایه" (Basic Authentication) پروتکل HTTP را برای دسترسی به پروکسی پیکربندی می‌کند. اگر هرگونه ورودی مشخص شده باشد، دسترسی فقط به کاربران احراز هویت شده داده می‌شود.
BasicAuth user password
در صورتی که "BasicAuth" پیکربندی شده باشد، اطلاعات قلمرو ("realm") را تنظیم می‌کند. وضعیت "Proxy Authentication Required" پاسخ خطای http 407 ("error-response") را می‌توان سفارشی کرد.

- در صورت عدم پیکربندی، در کد به‌طور پیش‌فرض به "Tinyproxy" (PACKAGE_NAME) تنظیم می‌شود.

یک یا چند هدر درخواست HTTP را برای اضافه شدن به درخواست‌های خروجی HTTP که Tinyproxy ارسال می‌کند پیکربندی می‌کند. توجه داشته باشید که این گزینه برای ترافیک HTTPS کار نخواهد کرد، زیرا Tinyproxy کنترلی بر روی هدرهای تبادل‌شده ندارد.
AddHeader "X-My-Header" "Powered by Tinyproxy"
استاندارد RFC 2616 از پروکسی‌ها می‌خواهد که یک هدر `Via` به درخواست‌های HTTP اضافه کنند، اما استفاده از نام واقعی میزبان می‌تواند یک نگرانی امنیتی باشد. اگر گزینه `ViaProxyname` وجود داشته باشد، مقدار رشته‌ای آن به عنوان نام میزبان در هدر Via استفاده خواهد شد. در غیر این صورت، نام میزبان سرور استفاده خواهد شد. آن را در علامت نقل‌قول دوتایی قرار دهید.
هنگامی که این گزینه روی yes تنظیم شود، Tinyproxy هدر `Via` را به درخواست‌ها اضافه نمی‌کند. این کار عملاً Tinyproxy را در حالت پنهان‌کار (stealth mode) قرار می‌دهد. توجه داشته باشید که RFC 2616 از پروکسی‌ها می‌خواهد که هدر `Via` را تنظیم کنند، بنابراین با فعال کردن این گزینه، شما انطباق با استاندارد را نقض می‌کنید. هدر `Via` را غیرفعال نکنید مگر این‌که دقیقاً بدانید چه کاری انجام می‌دهید...
برنامه Tinyproxy از فیلتر کردن وب‌سایت‌ها بر اساس URL یا دامنه پشتیبانی می‌کند. این گزینه مکان فایل حاوی قوانین فیلتر را مشخص می‌کند، هر قاعده در یک خط.

قوانین به عنوان عبارات باقاعده پایه POSIX (BRE) مشخص می‌شوند، مگر این‌که FilterType دیگری تعیین شده باشد. خطوط توضیح با یک نویسه `#` شروع می‌شوند.

نمونه محتوای فایل فیلتر:

# فیلتر کردن دقیق cnn.com
^cnn\.com$
# فیلتر کردن تمام زیردامنه‌های cnn.com، اما نه خود cnn.com
.*\.cnn.com$
# فیلتر کردن هر دامنه‌ای که cnn.com در آن وجود دارد، مانند xcnn.comfy.org
cnn\.com
# فیلتر کردن هر دامنه‌ای که به cnn.com ختم می‌شود
cnn\.com$
# فیلتر کردن هر دامنه‌ای که با adserver شروع می‌شود
^adserver
این گزینه می‌تواند روی یکی از مقادیر `bre`، `ere` یا `fnmatch` تنظیم شود. اگر `bre` تنظیم شود، قوانین مشخص‌شده در فایل فیلتر با استفاده از عبارات باقاعده پایه POSIX تطبیق داده می‌شوند، در صورت تنظیم روی `ere` از عبارات باقاعده گسترش‌یافته POSIX استفاده می‌شود، و در صورت تنظیم روی `fnmatch` از تابع `fnmatch` طبق آن‌چه در صفحه راهنمای `man 3p fnmatch` آمده است استفاده می‌شود. تطبیق `fnmatch` همانند روشی است که در شل برای تطبیق نام فایل‌ها به کار می‌رود؛ بنابراین به عنوان مثال `*.google.com` با هر چیزی که به `.google.com` ختم شود مطابقت دارد. اگر نمی‌دانید عبارات باقاعده چیستند یا از فهرست‌های فیلتر منابع شخص ثالث استفاده می‌کنید، `fnmatch` احتمالاً همان گزینه‌ای است که می‌خواهید. این روش همچنین سریع‌ترین روش تطبیق در میان این سه حالت است.
اگر این گزینه بولی روی `Yes` یا `On` تنظیم شود، فیلتر کردن به‌جای دامنه‌ها بر اساس URLها انجام می‌شود. حالت پیش‌فرض، فیلتر کردن بر اساس دامنه است.

توجه داشته باشید که فیلتر کردن بر اساس URL فقط در سناریوهای HTTP ساده کار می‌کند. از آن‌جا که HTTPS در طول سال‌های اخیر فراگیر شده است، این گزینه تنها روی بخش بسیار کوچکی از وب‌سایت‌ها کار خواهد کرد؛ بنابراین توصیه می‌شود از این گزینه استفاده نکنید.

منسوخ شده است. به‌جای آن از `FilterType ere` استفاده کنید. اگر این گزینه بولی روی `Yes` تنظیم شود، از عبارات باقاعده گسترش‌یافته POSIX برای تطبیق قوانین فیلتر استفاده می‌شود. حالت پیش‌فرض استفاده از عبارات باقاعده پایه POSIX است.
اگر این گزینه بولی روی `Yes` تنظیم شود، تطبیق قوانین فیلتر با حساسیت به حروف بزرگ و کوچک انجام می‌شود. متأسفانه پیش‌فرض این است که بدون حساسیت به حروف تطبیق داده شود. اگر این را روی `Yes` تنظیم کنید، سرعت تطبیق شما تقریباً دو برابر خواهد شد. این تنظیم تنها بر FilterTypeهای `bre` و `ere` تأثیر می‌گذارد؛ حالت fnmatch همیشه به حروف بزرگ و کوچک حساس است.
سیاست پیش‌فرض فیلتر کردن این است که به هر چیزی که با یک قاعده فیلتر مطابقت ندارد اجازه داده شود. تنظیم `FilterDefaultDeny` روی `Yes` این سیاست را تغییر می‌دهد تا همه چیز به جز دامنه‌ها یا URLهایی که با قوانین فیلتر مطابقت دارند رد شود. به عبارت دیگر، در صورت تنظیم روی `No` فهرست فیلتر به عنوان لیست سیاه عمل می‌کند و در صورت تنظیم روی `Yes` به عنوان لیست سفید.
اگر کلمه کلیدی `Anonymous` وجود داشته باشد، پروکسی ناشناس فعال می‌شود. هدرهای ذکرشده با `Anonymous` مجاز به عبور هستند، در حالی که سایر هدرها مسدود می‌شوند. اگر کلمه کلیدی Anonymous وجود نداشته باشد، تمام هدرها مجاز به عبور هستند. باید هدرها را درون علامت نقل‌قول دوتایی قرار دهید.

بیشتر سایت‌ها برای کارکرد صحیح نیاز دارند که کوکی‌ها فعال باشند، بنابراین اگر به چنین سایت‌هایی دسترسی دارید باید اجازه عبور کوکی‌ها را بدهید.

مثال:

Anonymous "Host"
Anonymous "Authorization"
Anonymous "Cookie"
این گزینه می‌تواند برای تعیین پورت‌های مجاز برای متد CONNECT استفاده شود. اگر هیچ خط `ConnectPort` یافت نشود، همه پورت‌ها مجاز هستند. برای غیرفعال کردن کامل متد CONNECT، یک خط ConnectPort تکی با مقدار `0` قرار دهید.
یک یا چند دستورالعمل ReversePath را برای فعال‌سازی پشتیبانی از پروکسی معکوس (reverse proxy) پیکربندی کنید. با پروکسی معکوس می‌توان کاری کرد که چندین سایت به گونه‌ای به نظر برسند که گویی بخشی از یک سایت واحد هستند.

اگر دو دستورالعمل زیر را از حالت توضیح خارج کرده و Tinyproxy را روی رایانه خود در پورت 8888 اجرا کنید، می‌توانید با استفاده از http://localhost:8888/example/ به example.com دسترسی پیدا کنید.

ReversePath "/example/" "http://www.example.com/"
هنگام استفاده از Tinyproxy به عنوان یک پروکسی معکوس، اکیداً توصیه می‌شود که پروکسی عادی با تنظیم این گزینه بولی روی `Yes` خاموش شود.
تنظیم این گزینه روی `Yes` باعث می‌شود Tinyproxy از یک کوکی برای ردیابی نگاشت‌های پروکسی معکوس استفاده کند. اگر نیاز به پروکسی معکوس برای سایت‌هایی دارید که پیوندهای مطلق دارند، باید از این گزینه استفاده کنید.
آدرس URL که برای دسترسی به این پروکسی معکوس استفاده می‌شود. این URL برای بازنویسی تغییرمسیرهای HTTP (HTTP redirects) استفاده می‌شود تا از پروکسی خارج نشوند. اگر زنجیره‌ای از پروکسی‌های معکوس دارید، باید بیرونی‌ترین URL را در این‌جا قرار دهید (آدرسی که کاربر نهایی در مرورگر خود تایپ می‌کند). اگر این گزینه تنظیم نشود، هیچ بازنویسی برای تغییرمسیرها رخ نخواهد داد.

برای گزارش باگ‌ها در Tinyproxy، لطفاً به https://tinyproxy.github.io/ مراجعه کنید.

tinyproxy(8)

این صفحه راهنما توسط تیم پروژه Tinyproxy نوشته شده است.

حق نشر © 1998-2024 متعلق به نویسندگان Tinyproxy است.

این برنامه تحت شرایط مجوز عمومی همگانی گنو (GNU GPL) نسخه 2 یا بالاتر توزیع می‌شود. برای اطلاعات تکمیلی فایل COPYING را ببینید.

2026-03-09 Version 1.11.3