SlideShare ist ein Scribd-Unternehmen logo
1 von 68
‫تعالی‬ ‫باسمه‬
nginx
‫آن‬ ‫های‬ ‫ژول‬ ‫ما‬ ‫و‬
‫الخصوص‬ ‫علی‬
naxsi
‫(چگونه‬
WAF
) ‫کنیم‬ ‫‌سازی‬
‫ه‬‫پیاد‬
: ‫نویسنده‬
‫دخت‬ ‫اسمعیل‬ ‫یاشار‬ ‫مهندس‬
: ‫نسخه‬
0.1
: ‫نویسنده‬ ‫درباره‬
‫رشته‬ ‫آموخته‬ ‫دانش‬ ‫دخت‬ ‫اسمعیل‬ ‫یاشار‬ ‫بنده‬
cyber security
. ‫هستم‬
‫از‬ ‫بیش‬
۱۵
. ‫دارم‬ ‫فعالیت‬ ‫سابقه‬ ‫سال‬
‫مولف‬ - ‫مدرس‬ - ‫مشاور‬ : ‫داد‬ ‫شرح‬ ‫زیر‬ ‫های‬ ‫ساختار‬ ‫در‬ ‫میتوان‬ ‫را‬ ‫بنده‬ ‫های‬ ‫فعالیت‬ ‫جمله‬ ‫از‬
gnu/linux system/network/security/cloud Engineer/administrator & oracle dba | Linux Trainer |devops
. ): ‫جدید‬ ‫دنیاهای‬ ‫کشف‬ ‫و‬ ‫تحقیق‬ ‫و‬ ‫مطالعه‬ ‫به‬ ‫مند‬ ‫عالقه‬
. ‫کنم‬ ‫اشاره‬ ‫استراتژی‬ ‫های‬ ‫بازی‬ ‫و‬ ‫اوتلو‬ ‫و‬ ‫شطرنج‬ ‫بازی‬ ‫به‬ ‫میتوانم‬ ‫من‬ ‫های‬ ‫سرگرمی‬ ‫از‬ ‫واقع‬ ‫در‬
‫تبریز‬ ‫الگ‬ ‫گذاران‬ ‫بنیان‬ ‫از‬ ‫یکی‬ ‫و‬ ‫لینوکس‬/‫گنو‬ ‫و‬ ‫باز‬ ‫متن‬ ‫دنیای‬ ‫عاشق‬ . ‫هستم‬ ‫عاشق‬ ‫یک‬ ‫من‬
: ‫کنید‬ ‫پیدا‬ ‫و‬ ‫کنید‬ ‫دنبال‬ ‫را‬ ‫من‬ ‫میتوانید‬ ‫چطور‬ ‫خب‬
Mob : 09141100257
Telegram ID
Telegram channel
Instagram Account
Linkedin Account
. ‫بشنوم‬ ‫را‬ ‫انتقادتون‬ ‫یا‬ ‫پیشنهاد‬ ‫هرگونه‬ ‫میشم‬ ‫خوشحال‬ ‫همچنین‬
: ‫کنید‬ ‫پیدا‬ ‫را‬ ‫من‬ ‫از‬ ‫ی‬ ‫دیگر‬ ‫های‬ ‫کتاب‬ ‫میتونید‬ ‫چطور‬
‫توی‬
slideshare
. ‫کنید‬ ‫پیدا‬ ‫را‬ ‫کردم‬ ‫منتشر‬ ‫آزاد‬ ‫بصورت‬ ‫که‬ ‫دیگری‬ ‫های‬ ‫کتاب‬ ‫میتونید‬ ‫بگردید‬ ‫من‬ ‫اسم‬ ‫دنبال‬ ‫گوگل‬ ‫یا‬
: ‫مشاوره‬
. ‫بود‬ ‫خواهم‬ ‫شما‬ ‫دسترس‬ ‫در‬ ‫من‬ . ‫فرمایید‬ ‫حاصل‬ ‫تماس‬ . ‫کردم‬ ‫اشاره‬ ‫قبل‬ ‫صفحه‬ ‫در‬ ‫که‬ ‫هایی‬ ‫کانال‬ ‫از‬ ‫میتوانید‬ ‫مشاوره‬ ‫جهت‬
nginx
. ‫میباشد‬ ‫قدرتمند‬ ‫سرور‬ ‫وب‬ ‫‌یک‬
‫از‬ ‫بعد‬ ‫دنیا‬ ‫در‬ ‫مطرح‬ ‫سرور‬ ‫وب‬ ‫دومین‬ ‫سرور‬ ‫وب‬ ‫این‬ ‫‌واقع‬
‫ر‬‫د‬
apache
. ‫‌باشد‬
‫ی‬‫م‬
. ‫برد‬ ‫بهره‬ ‫و‬ ‫کرد‬ ‫استفاده‬ ‫آن‬ ‫از‬ ‫‌توان‬
‫ی‬‫م‬ ‫نیاز‬ ‫به‬ ‫نسبت‬ ‫که‬ ‫دارد‬ ‫زیادی‬ ‫فرد‬ ‫به‬ ‫منحصر‬ ‫ی‬ ‫‌ها‬
‫ی‬‫ویژگ‬ ‫سرور‬ ‫وب‬ ‫این‬
‫به‬ ‫میتوان‬ ‫‌های‬
‫ت‬‫قابلی‬ ‫و‬ ‫مطرح‬ ‫های‬ ‫ماژول‬ ‫از‬ ‫یکی‬ . ‫نمود‬ ‫اشاره‬ ‫زیادی‬ ‫های‬ ‫ماژول‬ ‫از‬ ‫پشتیبانی‬ ‫به‬ ‫میتوان‬ ‫آن‬ ‫‌های‬
‫ی‬‫ویژگ‬ ‫از‬
mod
‫پروکسی‬
‫قابلیت‬ ‫همچنین‬ . ‫کرد‬ ‫اشاره‬ ‫آن‬
rtmp
‫یا‬
real time messaging protocol
. ‫میباشد‬ ‫اهمیت‬ ‫حايز‬ ‫بسیار‬ ‫که‬ ‫بود‬ ‫نمی‬ ‫اشاره‬ ‫آن‬
‫همچنین‬
‫پروکسی‬
‫انجنیکس‬ ‫سرور‬
‫های‬ ‫پروتکل‬ ‫برای‬
 
HTTP, HTTPS, SMTP, POP3
‫و‬
 
IMAP
 
‫استفاده‬ ‫مورد‬ … ‫و‬
.‫باشد‬ ‫می‬
‫از‬ ‫استفاده‬ ‫با‬ ‫که‬ ‫نمود‬ ‫اشاره‬ ‫نکته‬ ‫این‬ ‫به‬ ‫‌توان‬
‫ی‬‫م‬ ‫‌واقع‬
‫ر‬‫د‬
Nginx
‫میتوان‬
‫یا‬ ‫بار‬ ‫کننده‬ ‫متعادل‬ ‫عنوان‬ ‫به‬
 
load balancer
‫و‬ ‫سرور‬ ‫وب‬ ،
HTTP
cache
 
. ‫نمود‬ ‫استفاده‬
‫پروژه‬
nginx
‫کم‬ ‫استفاده‬ ‫ی‬ ‫رو‬ ‫و‬ ‫شده‬ ‫متمرکز‬ ‫باال‬ ‫سرعت‬ ‫و‬ ‫رقابت‬ ‫و‬ ‫کارایی‬ ‫روی‬
‫شده‬ ‫بهینه‬ ‫و‬
. ‫است‬ ‫گشته‬ ‫متمرکز‬ ‫رم‬ ‫از‬
‫جمله‬ ‫از‬ ‫مختلفی‬ ‫های‬ ‫عامل‬ ‫سیستم‬ ‫روی‬ ‫بر‬ ‫ایکس‬ ‫جین‬ ‫ان‬
 
Linux, OS X, Solaris, AIX, HP-UX
‫انواع‬ ‫و‬
 
BSD
‫‌سازی‬
‫ه‬‫پیاد‬ ‫قابل‬
. ‫میباشد‬
‫توسعه‬ ‫اساس‬
 
Nginx
‫پویای‬ ‫صفحات‬ ‫محتوای‬ ‫به‬ ‫رسانی‬ ‫خدمت‬ ‫برای‬ ‫توان‬ ‫می‬ ‫را‬
 
HTTP
‫طریق‬ ‫از‬ ‫شبکه‬ ‫روی‬ ‫بر‬
 
FastCGI, SCGI
‫برای‬
‫افزار‬ ‫نرم‬ ‫های‬ ‫دهنده‬ ‫سرویس‬ ‫و‬ ‫ها‬ ‫اسکریپت‬
 
WSGI
‫های‬ ‫ماژول‬ ‫یا‬
Phusion
‫عنوان‬ ‫به‬ ‫استفاده‬ ‫همچنین‬ ‫و‬
 
load balancer
.‫نمود‬ ‫معرفی‬
‫سرور‬ ‫وب‬
Nginx
‫موثر‬ ‫‌سازی‬
‫ه‬‫یکپارچ‬ ‫قابلیت‬ ‫و‬ ‫باند‬ ‫پهنای‬ ‫و‬ ‫دسترسی‬ ‫کنترل‬ ،‫نهان‬ ‫حافظه‬ ،‫بارگذاری‬ ‫در‬ ‫توازن‬ ‫نظیر‬ ‫بیشتری‬ ‫های‬ ‫قابلیت‬
‫ها‬ ‫ویژگی‬ ‫همین‬ ‫که‬ ‫داده‬ ‫جای‬ ‫خود‬ ‫در‬ ‫را‬ ‫فراوان‬ ‫کاربردی‬ ‫‌های‬
‫ه‬‫برنام‬ ‫با‬
Nginx
‫کرد‬ ‫جهان‬ ‫مجبوب‬ ‫سرور‬ ‫وب‬ ‫دومین‬ ‫به‬ ‫تبدیل‬ ‫را‬
. ‫است‬ ‫ه‬
‫تاریخچه‬
 
Nginx
‫توسعه‬
 
Nginx
‫توسط‬
 
Igor Sysoev
‫سال‬ ‫در‬
2002
‫سال‬ ‫جوالی‬ ‫در‬ .‫گردید‬ ‫اغاز‬
2011
‫نام‬ ‫به‬ ‫شرکت‬
 
Nginx, Inc
‫در‬
 
،‫فرانسیسکو‬ ‫سان‬
‫کالیفرنیا‬
 
‫کمپانی‬ ‫یک‬ ‫واقع‬ ‫در‬ ‫شرکت‬ ‫این‬ .‫داد‬ ‫شکل‬ ‫تغییر‬
 
information technology
 
‫ارائه‬ ‫و‬ ‫تولید‬ ‫را‬ ‫سرور‬ ‫وب‬ ‫های‬ ‫افزار‬ ‫نرم‬ ‫که‬ ‫میباشد‬
‫های‬ ‫بررسی‬ ‫اساس‬ ‫بر‬ .‫میدهد‬
 
Netcraft
‫سال‬ ‫اگوست‬ ‫در‬
2014
،
 
nginx
‫شناخته‬ ‫فعال‬ ‫های‬ ‫سایت‬ ‫در‬ ‫پرطرفدار‬ ‫سرور‬ ‫وب‬ ‫دومین‬ ‫عنوان‬ ‫به‬
.‫شد‬
‫های‬ ‫ویژگی‬
 
Nginx
‫های‬ ‫قابلیت‬ ‫و‬ ‫ها‬ ‫ویژگی‬ ‫از‬ ‫برخی‬ ‫از‬
 
Nginx
: ‫نمود‬ ‫اشاره‬ ‫زیر‬ ‫موارد‬ ‫به‬ ‫میتوان‬
•
‫از‬ ‫بیش‬ ‫مدیریت‬ ‫و‬ ‫پشتیبانی‬ ‫قابلیت‬
 
10,000
(
10K
)
‫پایین‬ ‫بسیار‬ ‫رم‬ ‫مصرف‬ ‫با‬ ‫همزمان‬ ‫اتصال‬
•
‫ق‬
‫ابلیت‬
 
Load balancing
•
‫قابلیت‬
Fault tolerance
•
‫از‬ ‫پشتیبانی‬
 
OCSP
 
‫با‬
 
OpenSSL
•
‫از‬ ‫پشتیبانی‬
 
FastCGI, SCGI, uWSGI
‫همراه‬ ‫به‬
 
caching
•
‫با‬ ‫سازگار‬
 
IPv6
•
‫پروتکل‬ ‫از‬ ‫پشتبانی‬
 
SPDY
•
‫اکسترکت‬ ‫و‬ ‫سازی‬ ‫فشرده‬
 
gzip
•
‫نویسی‬ ‫باز‬
URL
‫یا‬
 
URL rewriting
•
‫قابلیت‬
 
Bandwidth throttling
•
‫های‬ ‫داده‬ ‫پردازش‬
 
XSLT
•
‫از‬ ‫پشتیبانی‬
 
TLS/SSL
•
‫از‬ ‫پشتیبانی‬
 
STARTTL
‫ها‬
•
‫سرور‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫هویت‬ ‫احراز‬
HTTP
‫خارجی‬
•
‫مختلف‬ ‫مصارف‬ ‫برای‬ ‫مختلف‬ ‫های‬ ‫ماژول‬ ‫دارای‬
‫مختلف‬ ‫های‬ ‫الیه‬ ‫در‬ ‫هکرها‬ ‫حمالت‬
OSI
،‫ها‬ ‫الیه‬ ‫این‬ ‫از‬ ‫یکی‬ ‫که‬ ‫‌گیرد‬
‫ی‬‫م‬ ‫صورت‬
Application
‫و‬ ‫است‬ ‫شبکه‬ ‫الیه‬ ‫هفتمین‬ ،‫کاربرد‬ ‫الیه‬ .‫دارد‬ ‫نام‬
.‫‌افتد‬
‫ی‬‫م‬ ‫اتفاق‬ ‫الیه‬ ‫این‬ ‫در‬ ‫حمالت‬ ‫ترین‬ ‫پیچیده‬
WAF
‫مخفف‬
Web Application Firewall
.‫‌دهد‬
‫ی‬‫م‬ ‫نشان‬ ‫العمل‬ ‫عکس‬ ‫ها‬ ‫آن‬ ‫برابر‬ ‫در‬ ‫و‬ ‫کرده‬ ‫شناسایی‬ ‫را‬ ‫حمالت‬ ‫نوع‬ ‫این‬ ‫که‬ ‫است‬ ‫فایروالی‬
:‫شامل‬ ‫حمالت‬ ‫این‬
SQL Injection
XSS
‫باگ‬
CSRF
Buffer Overflow
Malicious Robots
Information leakage
Malicious and Illegal Encoding
Web Server and OS Attacks
OS command injection
‫باگ‬
RFI
Session Hijacking
DOS
Protection against common attacks
Site Reconnaissance
Parameter Tampering
Directory Traversal
… ‫و‬
. ‫میباشد‬
WAF
‫‌کند؟‬
‫ی‬‫م‬ ‫کار‬ ‫چگونه‬
WAF
‫الیه‬ ‫روی‬ ‫بر‬ ‫که‬ ‫است‬ ‫شده‬ ‫طراحی‬ ‫ای‬ ‫گونه‬ ‫به‬
Application
‫بر‬ ‫مبتنی‬ ‫خروجی‬/‫ورودی‬ ‫ترافیک‬ ‫و‬ ‫‌گیرد‬
‫ی‬‫م‬ ‫قرار‬
HTTP/HTTPS
‫را‬
‫درخواست‬ ‫دو‬ ‫هر‬ ‫از‬ ‫مخربی‬ ‫ترافیک‬ ‫که‬ ‫زمان‬ ‫هر‬ .‫‌کند‬
‫ی‬‫م‬ ‫بررسی‬
GET
‫و‬
POST
‫برخالف‬ .‫‌دهد‬
‫ی‬‫م‬ ‫نشان‬ ‫العمل‬ ‫عکس‬ ‫سرعت‬ ‫به‬ ،‫کند‬ ‫شناسایی‬ ‫را‬
،‫‌کنند‬
‫ی‬‫م‬ ‫عمل‬ ‫سرورها‬ ‫از‬ ‫ایمن‬ ‫دروازه‬ ‫یک‬ ‫عنوان‬ ‫به‬ ‫فقط‬ ‫که‬ ‫معمولی‬ ‫های‬ ‫فایروال‬
WAF
( ‫گیرنده‬ ‫سرویس‬ ‫بین‬ ‫که‬ ‫است‬ ‫امنیتی‬ ‫اقدام‬ ‫یک‬
Client
‫سخت‬ ‫بسیار‬ ‫تهدیدات‬ ‫نوع‬ ‫این‬ ‫تشخیص‬ ‫که‬ ‫‌گیرند‬
‫ی‬‫م‬ ‫انجام‬ ‫خودکار‬ ‫صورت‬ ‫به‬ ‫معموال‬ ،‫مخرب‬ ‫حمالت‬ ‫بیشترین‬ .‫دارد‬ ‫قرار‬ ‫سرور‬ ‫وب‬ ‫و‬ )
.‫نیست‬ ‫شناسایی‬ ‫قابل‬ ‫و‬ ‫شده‬ ‫طراحی‬ ‫انسان‬ ‫ترافیک‬ ‫از‬ ‫تقلید‬ ‫برای‬ ‫غالبا‬ ‫زیرا‬ ‫است؛‬
WAF
‫همه‬ ‫برای‬ ‫را‬ ‫پاسخ‬ ‫و‬ ‫درخواست‬ ‫هر‬ ‫از‬ ‫عمیقی‬ ‫بازرسی‬
.‫‌دهد‬
‫ی‬‫م‬ ‫انجام‬ ‫وب‬ ‫ترافیک‬ ‫متداول‬ ‫اشکاالت‬
‫به‬ ‫بازرسی‬ ‫این‬
WAF
.‫کند‬ ‫جلوگیری‬ ‫سرور‬ ‫به‬ ‫ها‬ ‫آن‬ ‫رسیدن‬ ‫از‬ ‫و‬ ‫کند‬ ‫مسدود‬ ‫و‬ ‫شناسایی‬ ‫را‬ ‫تهدیدات‬ ‫تا‬ ‫‌کند‬
‫ی‬‫م‬ ‫کمک‬
‫های‬ ‫ماژول‬ ‫از‬ ‫مورد‬ ‫چند‬ ‫بررسی‬ ‫به‬ ‫زیر‬ ‫در‬
nginx
‌
: ‫پرداخت‬ ‫خواهم‬ ‫را‬
‫کد‬ ‫سورس‬ ‫نیازمند‬ ‫کامپیایل‬ ‫جهت‬ ‫ادامه‬ ‫در‬
nginx
‫و‬
naxsi
. ‫مینماییم‬ ‫دانلود‬ ‫را‬ ‫نظر‬ ‫مد‬ ‫‌های‬
‫ل‬‫فای‬ . ‫هستیم‬
‫ماژول‬ ‫ساخت‬ ‫برای‬ ‫ها‬ ‫نیاز‬ ‫پیش‬
naxsi
‫ورژن‬ ‫به‬ ‫نسبت‬
nginx
‌
: ‫میباشد‬ ‫زیر‬ ‫شرح‬ ‫به‬
• Debian Base Distro
• GCC
• make
• nginx
• libpcre3-dev
‌
: ‫میکنیم‬ ‫نصب‬ ‫را‬ ‫خود‬ ‫نظر‬ ‫مد‬ ‫دبیان‬ ‫توزیع‬ ‫ادامه‬ ‫در‬
‫شکل‬
1
‫شکل‬
2
‫شکل‬
3
‫شکل‬
4
‫زبان‬ ‫انتخاب‬ -
‫شکل‬
5
‫شکل‬
6
‫شکل‬
7
‫دادن‬ -
hostname
‫شکل‬
8
‫شکل‬
9
‫شکل‬
10
‫جدید‬ ‫کاربر‬ ‫ساخت‬ -
‫شکل‬
11
‫کاربر‬ ‫ایجاد‬ -
‫شکل‬
12
‫شکل‬
13
‫کاربر‬ ‫برای‬ ‫رمز‬ ‫دادن‬ -
‫شکل‬
14
‫شکل‬
15
‫شکل‬
16
‫شکل‬
17
‫شکل‬
18
‫بندی‬ ‫پارتیشن‬ -
‫شکل‬
19
‫شکل‬
20
‫شکل‬
21
‫شکل‬
22
‫شکل‬
23
‫شکل‬
24
‫شکل‬
25
‫شکل‬
26
‫شکل‬
27
‫شکل‬
28
‫شکل‬
29
‫شکل‬
30
‫شکل‬
31
‫شکل‬
32
‫شکل‬
33
‫شکل‬
34
‫نصب‬ ‫مسیر‬ ‫انتخاب‬
grub
‫شکل‬
35
‫شکل‬
36
‫شکل‬
37
‫شکل‬
38
‌
: ‫نیاز‬ ‫مورد‬ ‫های‬ ‫بسته‬ ‫نصب‬
‫شکل‬
39
‫کامپایلر‬ ‫نصب‬ -
gcc
‫شکل‬
40
‫بسته‬ ‫نصب‬ -
libpcre3
‫شکل‬
41
‫کامپایل‬ :
nginx
‫ماژول‬ ‫‌با‬
naxsi
‫از‬ ‫را‬ ‫ها‬ ‫پارامتر‬ : ‫نکته‬
nginx -V
. ‫آوریم‬ ‫می‬ ‫بدست‬
‫مانند‬ . ‫باشد‬ ‫نصب‬ ‫باید‬ ‫میگیرد‬ ‫صورت‬ ‫کامپایل‬ ‫آن‬ ‫در‬ ‫که‬ ‫سیستم‬ ‫در‬ ‫ها‬ ‫پارامتر‬ ‫به‬ ‫نسبت‬ ‫نیاز‬ ‫مورد‬ ‫های‬ ‫‌پکیج‬
: ‫نکته‬
libssl , zlib
… ,
‫شکل‬
42
-
‫ماژول‬ ‫ساخت‬
‫شکل‬
43
-
‫شدن‬ ‫ساخته‬ ‫و‬ ‫شدن‬ ‫کامپایل‬ ‫شاهد‬ ‫ادامه‬ ‫در‬
ngx_http_naxsi_module.so
‫ورژن‬ ‫برای‬
1.16.1
nginx
. ‫هستیم‬
‫‌برای‬
: ‫نکته‬
compatibility
‫های‬ ‫پارامتر‬ ‫به‬ ‫مربوط‬ ‫های‬ ‫بسته‬ ‫هست‬ ‫نیاز‬
nginx
‫دستور‬ ‫از‬ ‫استفاده‬ ‫با‬ . ‫دهیم‬ ‫انجام‬ ‫را‬ ‫کامپایل‬ ‫و‬ ‫نصب‬ ‫را‬
nginx -V
. ‫میباشد‬ ‫‌پذیر‬
‫ن‬‫امکا‬ ‫نظر‬ ‫مد‬ ‫های‬ ‫ماژول‬ ‫و‬ ‫ها‬ ‫پارامتر‬ ‫مشاهده‬ ‫امکان‬
‫اگر‬ : ‫نکته‬
naxsi
‫در‬ ‫تست‬ ‫این‬ ‫در‬ ‫ما‬ . ‫است‬ ‫موجود‬ ‫‌ها‬
‫ن‬‫آ‬ ‫برای‬ ‫شده‬ ‫کامپایل‬ ‫بسته‬ ‫فدورا‬ ‫یا‬ ‫و‬ ‫باشد‬ ‫شده‬ ‫نصب‬ ‫ها‬ ‫بیس‬ ‫دبیان‬ ‫در‬
centos
‫کردیم‬ ‫نصب‬ ‫به‬ ‫اقدام‬
‫در‬ ‫ماژول‬ ‫این‬ ‫کردن‬ ‫فعال‬ ‫و‬ ‫کردن‬ ‫اضافه‬ ‫جهت‬ ‫این‬ ‫حال‬
nginx.conf
. ‫میکنیم‬ ‫اعمال‬ ‫را‬ ‫نظر‬ ‫مد‬ ‫کانفیق‬
‌
: ‫نمونه‬ ‫برای‬
: ‫داریم‬ ‫فایل‬ ‫دو‬ ‫‌ما‬
: ‫نکته‬
naxsi_core.rules
‫پروژه‬ ‫در‬ ‫(که‬
naxsi
) ‫است‬ ‫موجود‬
‫و‬
ngx_http_naxsi_module.so
.
) ‫ساختیم‬ ‫ما‬ ‫(که‬
‫فایل‬
ngx_http_naxsi_module.so
‫از‬ ‫استفاده‬ ‫با‬ ‫را‬
load_module
‫اقدام‬
‫به‬
. ‫میکنیم‬ ‫کردن‬ ‫لود‬
# Edit this 'include' directive to point to your naxsi_core.rules
file
include /etc/nginx/naxsi_core.rules;
server {
listen 80;
location / {
root /usr/share/nginx/html;
SecRulesEnabled; #enable naxsi
LearningMode; #enable learning mode
LibInjectionSql; #enable libinjection support for SQLI
LibInjectionXss; #enable libinjection support for XSS
# Define where blocked requests go
DeniedUrl "/50x.html";
# CheckRules, determining when NAXSI needs to take action
CheckRule "$SQL >= 8" BLOCK;
CheckRule "$RFI >= 8" BLOCK;
CheckRule "$TRAVERSAL >= 4" BLOCK;
CheckRule "$EVADE >= 4" BLOCK;
CheckRule "$XSS >= 8" BLOCK;
# Don’t forget the error_log, where blocked requests are logged
error_log /tmp/naxsi.log;
}
error_page 500 502 503 504 /50x.html;
}
‫کانفیق‬ ‫ساختار‬ ‫از‬ ‫قسمتی‬ ‫شرح‬
nginx
:
‫نود‬ ‫در‬ ‫موجود‬ ‫فایل‬ ‫کانفیق‬ ‫بررسی‬ ‫به‬ ‫سپس‬ ‫داده‬ ‫قرار‬ ‫بررسی‬ ‫مورد‬ ‫را‬ ‫فرضی‬ ‫سناروی‬ ‫یک‬ ‫زیر‬ ‫در‬
naxsi
. ‫نمود‬ ‫خواهیم‬ ‫بررسی‬ ‫را‬
‫ایجاد‬ ‫دیگر‬ ‫نکته‬
load balancer
‫ساختار‬ ‫مثال‬ ‫این‬ ‫در‬ ‫ما‬ . ‫است‬ ‫بیشتر‬ ‫اطمینان‬ ‫حصول‬ ‫برای‬
load balancing
. ‫کردیم‬ ‫بررسی‬ ‫نیز‬ ‫را‬
‫برای‬ ‫همچنین‬ . ‫گردد‬ ‫بسیار‬ ‫ها‬ ‫درخواست‬ ‫و‬ ‫ترافیک‬ ‫میزان‬ ‫و‬ ‫شود‬ ‫بیشتر‬ ‫سایت‬ ‫کاربران‬ ‫تعداد‬ ‫وقتی‬
HA
‫و‬
reliability
‫ایجاد‬ ‫به‬ ‫نیاز‬
loadbalancing
‫بین‬ ‫در‬ ‫را‬ ‫شده‬ ‫ارسال‬ ‫‌های‬
‫ت‬‫درخواس‬ ‫که‬ ‫هستیم‬ ‫سرور‬ ‫وب‬ ‫یک‬ ‫نیازمند‬ ‫حال‬ ‫این‬ ‫با‬ . ‫هستیم‬
instance
‫پخش‬ ‫موجود‬ ‫های‬
‫بین‬ ‫در‬ ‫‌ها‬
‫ت‬‫ریکوئس‬ ‫تعداد‬ ‫کار‬ ‫این‬ ‫انجام‬ ‫با‬ .‫کند‬
instance
‫از‬ ‫میتوانیم‬ ‫اینکار‬ ‫انجام‬ ‫برای‬ .‫میشوند‬ ‫تقسیم‬ ‫ها‬
nginx
.‫کنیم‬ ‫استفاده‬
‫مانند‬ ‫دیگر‬ ‫‌های‬
‫ه‬‫برنام‬ ‫از‬ ‫میتوانیم‬ ‫مفهوم‬ ‫این‬ ‫برای‬ ‫همچنین‬
squid , varnish , haproxy
. ‫کنیم‬ ‫استفاده‬ ‫نیز‬
nginx
‫قابلیت‬
load balancing
‫سازی‬ ‫پیاده‬ ‫برای‬ .‫دارد‬ ‫را‬
load balancing
‫در‬
nginx
‫فایل‬ ‫در‬ ‫باید‬
nginx.conf
‫نوع‬ ‫از‬ ‫گروه‬ ‫یک‬
upstream
‫کانتکست‬ ‫در‬ ‫کنید‬ ‫ایجاد‬
http
.
http {
upstream myserver {
server server1.example.com;
server server2.example.com;
server server3.example.com;
}
}
‫نام‬ ‫به‬ ‫گروه‬ ‫یک‬ ‫باال‬ ‫کانفیگ‬ ‫در‬
myserver
‫سه‬ ‫یعنی‬ .‫‌باشد‬
‫ی‬‫م‬ ‫سرور‬ ‫سه‬ ‫شامل‬ ‫که‬ ‫‌ایم‬
‫ه‬‫کرد‬ ‫ایجاد‬
instance
‫و‬ ‫هستند‬ ‫اجرا‬ ‫حال‬ ‫در‬ ‫برنامه‬ ‫از‬
‫کانتکس‬ ‫در‬ ‫باید‬ ‫سپس‬ .‫کنیم‬ ‫ارسال‬ ‫‌ها‬
‫ر‬‫سرو‬ ‫این‬ ‫روی‬ ‫بر‬ ‫را‬ ‫شده‬ ‫ارسال‬ ‫‌های‬
‫ت‬‫ریکوئس‬ ‫میتوانیم‬
server
‫کانتکست‬ ‫درون‬ ‫هم‬ ‫کانتکست‬ ‫این‬ (
http
‫نوع‬ ‫از‬ ‫بالک‬ ‫یک‬ ) ‫دارد‬ ‫قرار‬
location
‫کلمه‬ ‫از‬ ‫بعد‬ .‫کنیم‬ ‫ایجاد‬
location
‫را‬ ‫میشوند‬ ‫ارسال‬ ‫آن‬ ‫به‬ ‫‌ها‬
‫ت‬‫درخواس‬ ‫که‬ ‫را‬ ‫مسیری‬ ‫باید‬
‫از‬ ‫بعد‬ / ‫نوشتن‬ .) / ( ‫است‬ ‫شده‬ ‫نوشته‬ ‫سایت‬ ‫وب‬ ‫روت‬ ‫همان‬ ‫پایین‬ ‫مثال‬ ‫در‬ ‫که‬ ‫بنویسید‬
location
.‫میشود‬ ‫شامل‬ ‫را‬ ‫‌ها‬
‫ت‬‫درخواس‬ ‫تمامی‬
‫به‬ ‫که‬ ‫را‬ ‫‌هایی‬
‫ت‬‫درخواس‬ ‫فقط‬ ‫میتوانید‬ ‫همچنین‬
api
‫از‬ / ‫جای‬ ‫به‬ ‫میتوانید‬ ‫که‬ ‫کنید‬ ‫فیلتر‬ ،‫میشوند‬ ‫ارسال‬ ‫ها‬
api
‫کار‬ ‫این‬ ‫با‬ .‫کنید‬ ‫استفاده‬ /
‫که‬ ‫‌هایی‬
‫ت‬‫درخواس‬ ‫تمامی‬
url
‫با‬ ‫آنها‬
api
‫بالک‬ ‫وارد‬ ‫شود‬ ‫شروع‬ /
location
.‫میشوند‬
‫از‬ ‫باید‬ ‫اجرا‬ ‫حال‬ ‫در‬ ‫‌های‬
‫ه‬‫برنام‬ ‫بین‬ ‫در‬ ‫‌ها‬
‫ت‬‫درخواس‬ ‫کردن‬ ‫ارسال‬ ‫برای‬ ‫سپس‬
proxy_pass
‫کلمه‬ ‫از‬ ‫بعد‬ .‫کنیم‬ ‫استفاده‬
proxy_pass
‫نام‬ ‫باید‬
upstream
‫‌های‬
‫ر‬‫سرو‬ ‫بین‬ ‫در‬ / ‫به‬ ‫شده‬ ‫ارسال‬ ‫‌های‬
‫ت‬‫درخواس‬ ‫تمامی‬ ‫اینکار‬ ‫انجام‬ ‫با‬ .‫کنیم‬ ‫وارد‬ ،‫‌ایم‬
‫ه‬‫نوشت‬ ‫باال‬ ‫در‬ ‫که‬ ‫را‬ ‫ی‬
server
‫پخش‬
.‫میشوند‬
http {
upstream myserver {
server server1.example.com;
server server2.example.com;
server server3.example.com;
}
server {
location / {
proxy_pass http://server;
}
}
}
‫سرور‬ ‫وب‬
nginx
‫الگوریتم‬ ‫از‬ ‫پیشفرض‬ ‫طور‬ ‫به‬
Round robin
‫میتوانیم‬ ‫البته‬ .‫میکند‬ ‫استفاده‬ ‫‌ها‬
‫ر‬‫سرو‬ ‫بین‬ ‫در‬ ‫‌ها‬
‫ت‬‫درخواس‬ ‫کردن‬ ‫پخش‬ ‫برای‬
.‫بدهیم‬ ‫تغییر‬ ‫را‬ ‫الگوریتم‬ ‫این‬
.‫شود‬ ‫ارسال‬ ‫درخواست‬ ‫چند‬ ‫‌ها‬
‫ر‬‫سرو‬ ‫از‬ ‫هرکدام‬ ‫به‬ ‫که‬ ‫کنیم‬ ‫مشخص‬ ‫میتوانیم‬ ‫مثال‬ ‫طور‬ ‫به‬
‫افزودن‬ ‫با‬
weight
‫اگر‬ ‫مثال‬ ‫طور‬ ‫به‬ ‫که‬ ‫میکنم‬ ‫مشخص‬ ‫‌ها‬
‫ر‬‫سرو‬ ‫نام‬ ‫کنار‬ ‫در‬
7
،‫شود‬ ‫ارسال‬ ‫سرور‬ ‫به‬ ‫درخواست‬
5
‫به‬ ‫مورد‬
server1
‫ارسال‬
‫و‬ ‫میشود‬
2
‫به‬ ‫مورد‬
server2
‫سرور‬ ‫عنوان‬ ‫به‬ ‫سرور‬ ‫یک‬ ‫که‬ ‫کنیم‬ ‫مشخص‬ ‫میتوانیم‬ ‫همچنین‬ .
backup
‫مانند‬ ‫باشد‬
server4
.
‫کلمه‬ ‫کردن‬ ‫اضافه‬ ‫با‬ ‫میتوانید‬ ‫نباشد‬ ‫دسترس‬ ‫در‬ ‫سروری‬ ‫اگر‬
down
‫مانند‬ ‫کنید؛‬ ‫جلوگیری‬ ‫آن‬ ‫به‬ ‫درخواست‬ ‫ارسال‬ ‫از‬ ،‫سرور‬ ‫نام‬ ‫از‬ ‫بعد‬
server3
‫کلمه‬ ‫از‬ ‫قبل‬ ‫یا‬ ‫و‬
server
.‫دهید‬ ‫قرار‬ # ‫عالمت‬ ‫یک‬
upstream myserver {
server server1.example.com weight=5;
server server2.example.com weight=2;
server server3.example.com down;
server server4.example.com backup;
}
‫سرور‬ ‫کار‬ ‫این‬ ‫انجام‬ ‫با‬
server4
‫سرور‬ ‫عنوان‬ ‫به‬
backup
‫به‬ ‫ریکوئستی‬ ‫هیچ‬ ،‫باشند‬ ‫دسترس‬ ‫در‬ ‫سرورها‬ ‫بقی‬ ‫ما‬ ‫زمانیکه‬ ‫تا‬ ‫و‬ ‫است‬ ‫شده‬ ‫معرفی‬
‫سرور‬
server4
‫‌های‬
‫ر‬‫سرو‬ ‫تمامی‬ ‫اگر‬ .‫نمیشود‬ ‫ارسال‬
server1
‫و‬
server2
‫آنگاه‬ ،‫شوند‬ ‫خارج‬ ‫دسترس‬ ‫از‬
nginx
‫را‬ ‫شده‬ ‫ارسال‬ ‫‌های‬
‫ت‬‫درخواس‬
‫سرور‬ ‫به‬
backup
‫یعنی‬
server4
.‫میکند‬ ‫ارسال‬
‫پیشفرض‬ ‫طور‬ ‫به‬ ‫البته‬
nginx
‫به‬ ‫مربوط‬ ‫تنظیمات‬ ‫سری‬ ‫یک‬ ‫باید‬ ‫و‬ ‫نمیکند‬ ‫بررسی‬ ‫را‬ ‫سرورها‬ ‫سالمت‬
health_check
.‫کنیم‬ ‫ثبت‬ ‫را‬
‫دستور‬ ‫کردن‬ ‫اضافه‬ ‫با‬
health_check
‫پایین‬ ‫در‬
proxy_pass
‫سرور‬ ‫وب‬
nginx
‫هر‬
5
‫سرورهای‬ ‫به‬ ‫را‬ ‫ریکوئست‬ ‫یک‬ ‫بار‬ ‫یک‬ ‫ثانیه‬
server
‫کدهای‬ ‫از‬ ‫خارج‬ ‫کدی‬ ‫ریسپانس‬ ‫‌ها‬
‫ر‬‫سرو‬ ‫از‬ ‫هرکدام‬ ‫اگر‬ ‫و‬ ‫میکند‬ ‫ارسال‬
200
‫تا‬
399
‫سرورها‬ ‫آن‬ ‫به‬ ‫را‬ ‫بعدی‬ ‫‌های‬
‫ت‬‫درخواس‬ ،‫کنند‬ ‫ارسال‬ ‫را‬
.‫نمیکند‬ ‫ارسال‬
server {
location / {
proxy_pass http://server;
health_check;
}
}
‫دستور‬ ‫کنار‬ ‫در‬
health_check
‫درخواست‬ ‫که‬ ‫کنیم‬ ‫مشخص‬ ‫میتوانیم‬ ‫مثال‬ ‫طور‬ ‫به‬ .‫کنیم‬ ‫مشخص‬ ‫هم‬ ‫را‬ ‫پارامتر‬ ‫سری‬ ‫یک‬ ‫میتوانیم‬
health_check
‫چه‬ ‫به‬ ‫را‬
uri
.‫کند‬ ‫ارسال‬ ‫را‬ ‫درخواست‬ ‫پورتی‬ ‫چه‬ ‫به‬ ‫یا‬ ‫و‬ ‫کند‬ ‫ارسال‬ ‫ای‬
server {
location / {
proxy_pass http://server;
health_check port=8080;
#health_check uri=/healthcheck;
}
}
.)‫میشود‬ ‫استفاده‬ # ‫از‬ ‫دستور‬ ‫یک‬ ‫کردن‬ ‫کامنت‬ ‫(برای‬
‫کردن‬ ‫مشخص‬ ‫برای‬ ‫را‬ ‫سفارشی‬ ‫درخواست‬ ‫یک‬ ‫میتوانیم‬ ‫همچنین‬
health_check
:‫کنیم‬ ‫ایجاد‬
http {
#...
match welcome {
status 200;
header Content-Type = text/html;
body ~ "Welcome to nginx!";
}
server {
#...
location / {
proxy_pass http://server;
health_check match=welcome;
}
}
}
‫کد‬ ‫استتوس‬ ‫باید‬ ‫سرورها‬ ‫از‬ ‫هرکدام‬ ‫بودن‬ ‫دسترس‬ ‫در‬ ‫دادن‬ ‫نشان‬ ‫برای‬ ‫که‬ ‫‌ایم‬
‫ه‬‫کرد‬ ‫مشخص‬ ‫باال‬ ‫کانفیگ‬ ‫در‬
200
‫و‬ ‫شود‬ ‫برگردانده‬
body
! ‫حاوی‬ ‫شده‬ ‫دریافت‬
Welcome to nginx
.‫باشد‬
: ‫نکته‬
match
‫و‬
health_check
‫تجاری‬ ‫نسخه‬ ‫در‬
nginx
.‫‌باشند‬
‫ی‬‫م‬ ‫استفاده‬ ‫قابل‬
‫پورت‬ ‫از‬ ‫که‬ ‫هایی‬ ‫درخواست‬ ‫تمام‬ ‫مثال‬
۸۰
‫پورت‬ ‫از‬ ‫باید‬ ،‫رسد‬ ‫می‬ ‫سرور‬ ‫به‬
۳۰۰۰
.‫کنند‬ ‫گذر‬ ‫سرور‬ ‫داخل‬
‫کانفیگ‬ ‫فایل‬ ‫وارد‬ ‫ابتدا‬ ‫اینکار‬ ‫برای‬
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
.‫شود‬ ‫می‬ ‫انجام‬
‫ساختار‬ ‫بهتر‬ ‫درک‬ ‫برای‬ ‫بیشتر‬ ‫تنظیمات‬
nginx
:
:‫کنید‬ ‫اضافه‬ ‫خود‬ ‫تنظیمات‬ ‫فایل‬ ‫به‬ ‫نیز‬ ‫بیشتری‬ ‫تنظیماتی‬ ‫توانید‬ ‫می‬ ‫شما‬ ‫همچنین‬
‫نسخه‬ ‫تنظیم‬
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;
}
}

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

کتاب Samba and Nfs
کتاب Samba and Nfsکتاب Samba and Nfs
کتاب Samba and Nfs
 
how enable ceph dashboard
how enable  ceph dashboardhow enable  ceph dashboard
how enable ceph dashboard
 
Zfs and btrfs
Zfs and btrfsZfs and btrfs
Zfs and btrfs
 
Rbdmap ceph realease 0.2
Rbdmap ceph realease 0.2Rbdmap ceph realease 0.2
Rbdmap ceph realease 0.2
 
Ossec
OssecOssec
Ossec
 
Recovery in gnu/linux
Recovery in gnu/linux Recovery in gnu/linux
Recovery in gnu/linux
 
rbdmap in ceph
rbdmap in ceph rbdmap in ceph
rbdmap in ceph
 
Podman
PodmanPodman
Podman
 
Ssh
SshSsh
Ssh
 
Ssh edition 2
Ssh edition 2Ssh edition 2
Ssh edition 2
 
Pg autoscaling in ceph
Pg autoscaling in  cephPg autoscaling in  ceph
Pg autoscaling in ceph
 
Partition in oracle mysql |Mariadb
Partition in oracle mysql |MariadbPartition in oracle mysql |Mariadb
Partition in oracle mysql |Mariadb
 
Beowolf
BeowolfBeowolf
Beowolf
 
Vpn
VpnVpn
Vpn
 
Package management
Package managementPackage management
Package management
 
Network penetration
Network penetrationNetwork penetration
Network penetration
 
کتاب امنیت
کتاب امنیتکتاب امنیت
کتاب امنیت
 
تجارت الکترونبکی با opencart
تجارت الکترونبکی با opencartتجارت الکترونبکی با opencart
تجارت الکترونبکی با opencart
 
‫سطح دسترسی و کنترل لیست و سهمیه بندی‬ ‫در گنو/لینوکس‬
‫سطح دسترسی و کنترل لیست و سهمیه بندی‬ ‫در گنو/لینوکس‬‫سطح دسترسی و کنترل لیست و سهمیه بندی‬ ‫در گنو/لینوکس‬
‫سطح دسترسی و کنترل لیست و سهمیه بندی‬ ‫در گنو/لینوکس‬
 
Dns spoofing
Dns spoofingDns spoofing
Dns spoofing
 

Ähnlich wie How Create Waf With Naxsi

Ähnlich wie How Create Waf With Naxsi (20)

how upgrade ceph
how upgrade cephhow upgrade ceph
how upgrade ceph
 
Proxmox
ProxmoxProxmox
Proxmox
 
squid
squidsquid
squid
 
Node js-&-express-hassan-tafreshi-persian-lan
Node js-&-express-hassan-tafreshi-persian-lanNode js-&-express-hassan-tafreshi-persian-lan
Node js-&-express-hassan-tafreshi-persian-lan
 
HotSpot
HotSpotHotSpot
HotSpot
 
Load Balancing-as-a-Service (LBaaS) with octavia in openstack
Load Balancing-as-a-Service (LBaaS) with octavia in openstackLoad Balancing-as-a-Service (LBaaS) with octavia in openstack
Load Balancing-as-a-Service (LBaaS) with octavia in openstack
 
how create linux image for cloud
how create linux image for cloud how create linux image for cloud
how create linux image for cloud
 
Docker
DockerDocker
Docker
 
مرجع oracle mysql |mariadb
مرجع oracle mysql |mariadb مرجع oracle mysql |mariadb
مرجع oracle mysql |mariadb
 
Ulimit
UlimitUlimit
Ulimit
 
Network Load Balancing (NLB)
Network Load Balancing (NLB)Network Load Balancing (NLB)
Network Load Balancing (NLB)
 
چرا نود.جی اس؟
چرا نود.جی اس؟چرا نود.جی اس؟
چرا نود.جی اس؟
 
ارائه ابزار.pptx
ارائه ابزار.pptxارائه ابزار.pptx
ارائه ابزار.pptx
 
nbd and it's benefits
nbd and it's benefitsnbd and it's benefits
nbd and it's benefits
 
how use iptables
how use iptables how use iptables
how use iptables
 
OpenStack and its service
OpenStack and its serviceOpenStack and its service
OpenStack and its service
 
Nfs Acl
Nfs AclNfs Acl
Nfs Acl
 
PHP Web service - وب سرویس
PHP Web service - وب سرویسPHP Web service - وب سرویس
PHP Web service - وب سرویس
 
ips/ids
ips/idsips/ids
ips/ids
 
nbd
nbdnbd
nbd
 

Mehr von Yashar Esmaildokht

Mehr von Yashar Esmaildokht (16)

File Integrity Monitoring ( FIM )
File  Integrity   Monitoring     ( FIM )File  Integrity   Monitoring     ( FIM )
File Integrity Monitoring ( FIM )
 
how install and config sdn in proxmox virtualization
how install and config sdn in proxmox virtualizationhow install and config sdn in proxmox virtualization
how install and config sdn in proxmox virtualization
 
service registery and the service discovery
service registery and the service discoveryservice registery and the service discovery
service registery and the service discovery
 
process
processprocess
process
 
openstack designate
openstack designateopenstack designate
openstack designate
 
bcache and cachefs its benefits.
bcache and cachefs   its benefits. bcache and cachefs   its benefits.
bcache and cachefs its benefits.
 
Systemd and its various uses and capabilities.
Systemd and its various uses and capabilities.Systemd and its various uses and capabilities.
Systemd and its various uses and capabilities.
 
radosgw
radosgw radosgw
radosgw
 
cachefs
cachefs cachefs
cachefs
 
how add and remove Mgr in ceph cluster
how add and remove  Mgr in ceph  clusterhow add and remove  Mgr in ceph  cluster
how add and remove Mgr in ceph cluster
 
how add and delete new mon in ceph cluster
how add  and delete new  mon in ceph clusterhow add  and delete new  mon in ceph cluster
how add and delete new mon in ceph cluster
 
raid with megacli
raid with megacliraid with megacli
raid with megacli
 
Openstack Rally
Openstack RallyOpenstack Rally
Openstack Rally
 
نحوه ایجاد snapshot و ایجاد point در سیستم‌های گنو/لینوکسی برای ایجاد sys...
 نحوه ایجاد snapshot  و ایجاد point  در سیستم‌های گنو/لینوکسی  برای ایجاد sys... نحوه ایجاد snapshot  و ایجاد point  در سیستم‌های گنو/لینوکسی  برای ایجاد sys...
نحوه ایجاد snapshot و ایجاد point در سیستم‌های گنو/لینوکسی برای ایجاد sys...
 
linux industry
linux industrylinux industry
linux industry
 
security book
security book security book
security book
 

How Create Waf With Naxsi

  • 1. ‫تعالی‬ ‫باسمه‬ nginx ‫آن‬ ‫های‬ ‫ژول‬ ‫ما‬ ‫و‬ ‫الخصوص‬ ‫علی‬ naxsi ‫(چگونه‬ WAF ) ‫کنیم‬ ‫‌سازی‬ ‫ه‬‫پیاد‬ : ‫نویسنده‬ ‫دخت‬ ‫اسمعیل‬ ‫یاشار‬ ‫مهندس‬ : ‫نسخه‬ 0.1
  • 2. : ‫نویسنده‬ ‫درباره‬ ‫رشته‬ ‫آموخته‬ ‫دانش‬ ‫دخت‬ ‫اسمعیل‬ ‫یاشار‬ ‫بنده‬ cyber security . ‫هستم‬ ‫از‬ ‫بیش‬ ۱۵ . ‫دارم‬ ‫فعالیت‬ ‫سابقه‬ ‫سال‬ ‫مولف‬ - ‫مدرس‬ - ‫مشاور‬ : ‫داد‬ ‫شرح‬ ‫زیر‬ ‫های‬ ‫ساختار‬ ‫در‬ ‫میتوان‬ ‫را‬ ‫بنده‬ ‫های‬ ‫فعالیت‬ ‫جمله‬ ‫از‬ gnu/linux system/network/security/cloud Engineer/administrator & oracle dba | Linux Trainer |devops . ): ‫جدید‬ ‫دنیاهای‬ ‫کشف‬ ‫و‬ ‫تحقیق‬ ‫و‬ ‫مطالعه‬ ‫به‬ ‫مند‬ ‫عالقه‬ . ‫کنم‬ ‫اشاره‬ ‫استراتژی‬ ‫های‬ ‫بازی‬ ‫و‬ ‫اوتلو‬ ‫و‬ ‫شطرنج‬ ‫بازی‬ ‫به‬ ‫میتوانم‬ ‫من‬ ‫های‬ ‫سرگرمی‬ ‫از‬ ‫واقع‬ ‫در‬ ‫تبریز‬ ‫الگ‬ ‫گذاران‬ ‫بنیان‬ ‫از‬ ‫یکی‬ ‫و‬ ‫لینوکس‬/‫گنو‬ ‫و‬ ‫باز‬ ‫متن‬ ‫دنیای‬ ‫عاشق‬ . ‫هستم‬ ‫عاشق‬ ‫یک‬ ‫من‬ : ‫کنید‬ ‫پیدا‬ ‫و‬ ‫کنید‬ ‫دنبال‬ ‫را‬ ‫من‬ ‫میتوانید‬ ‫چطور‬ ‫خب‬ Mob : 09141100257 Telegram ID Telegram channel Instagram Account Linkedin Account . ‫بشنوم‬ ‫را‬ ‫انتقادتون‬ ‫یا‬ ‫پیشنهاد‬ ‫هرگونه‬ ‫میشم‬ ‫خوشحال‬ ‫همچنین‬ : ‫کنید‬ ‫پیدا‬ ‫را‬ ‫من‬ ‫از‬ ‫ی‬ ‫دیگر‬ ‫های‬ ‫کتاب‬ ‫میتونید‬ ‫چطور‬ ‫توی‬ slideshare . ‫کنید‬ ‫پیدا‬ ‫را‬ ‫کردم‬ ‫منتشر‬ ‫آزاد‬ ‫بصورت‬ ‫که‬ ‫دیگری‬ ‫های‬ ‫کتاب‬ ‫میتونید‬ ‫بگردید‬ ‫من‬ ‫اسم‬ ‫دنبال‬ ‫گوگل‬ ‫یا‬
  • 3. : ‫مشاوره‬ . ‫بود‬ ‫خواهم‬ ‫شما‬ ‫دسترس‬ ‫در‬ ‫من‬ . ‫فرمایید‬ ‫حاصل‬ ‫تماس‬ . ‫کردم‬ ‫اشاره‬ ‫قبل‬ ‫صفحه‬ ‫در‬ ‫که‬ ‫هایی‬ ‫کانال‬ ‫از‬ ‫میتوانید‬ ‫مشاوره‬ ‫جهت‬
  • 4. nginx . ‫میباشد‬ ‫قدرتمند‬ ‫سرور‬ ‫وب‬ ‫‌یک‬ ‫از‬ ‫بعد‬ ‫دنیا‬ ‫در‬ ‫مطرح‬ ‫سرور‬ ‫وب‬ ‫دومین‬ ‫سرور‬ ‫وب‬ ‫این‬ ‫‌واقع‬ ‫ر‬‫د‬ apache . ‫‌باشد‬ ‫ی‬‫م‬ . ‫برد‬ ‫بهره‬ ‫و‬ ‫کرد‬ ‫استفاده‬ ‫آن‬ ‫از‬ ‫‌توان‬ ‫ی‬‫م‬ ‫نیاز‬ ‫به‬ ‫نسبت‬ ‫که‬ ‫دارد‬ ‫زیادی‬ ‫فرد‬ ‫به‬ ‫منحصر‬ ‫ی‬ ‫‌ها‬ ‫ی‬‫ویژگ‬ ‫سرور‬ ‫وب‬ ‫این‬ ‫به‬ ‫میتوان‬ ‫‌های‬ ‫ت‬‫قابلی‬ ‫و‬ ‫مطرح‬ ‫های‬ ‫ماژول‬ ‫از‬ ‫یکی‬ . ‫نمود‬ ‫اشاره‬ ‫زیادی‬ ‫های‬ ‫ماژول‬ ‫از‬ ‫پشتیبانی‬ ‫به‬ ‫میتوان‬ ‫آن‬ ‫‌های‬ ‫ی‬‫ویژگ‬ ‫از‬ mod ‫پروکسی‬ ‫قابلیت‬ ‫همچنین‬ . ‫کرد‬ ‫اشاره‬ ‫آن‬ rtmp ‫یا‬ real time messaging protocol . ‫میباشد‬ ‫اهمیت‬ ‫حايز‬ ‫بسیار‬ ‫که‬ ‫بود‬ ‫نمی‬ ‫اشاره‬ ‫آن‬ ‫همچنین‬ ‫پروکسی‬ ‫انجنیکس‬ ‫سرور‬ ‫های‬ ‫پروتکل‬ ‫برای‬   HTTP, HTTPS, SMTP, POP3 ‫و‬   IMAP   ‫استفاده‬ ‫مورد‬ … ‫و‬ .‫باشد‬ ‫می‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫که‬ ‫نمود‬ ‫اشاره‬ ‫نکته‬ ‫این‬ ‫به‬ ‫‌توان‬ ‫ی‬‫م‬ ‫‌واقع‬ ‫ر‬‫د‬ Nginx ‫میتوان‬ ‫یا‬ ‫بار‬ ‫کننده‬ ‫متعادل‬ ‫عنوان‬ ‫به‬   load balancer ‫و‬ ‫سرور‬ ‫وب‬ ، HTTP cache   . ‫نمود‬ ‫استفاده‬ ‫پروژه‬ nginx ‫کم‬ ‫استفاده‬ ‫ی‬ ‫رو‬ ‫و‬ ‫شده‬ ‫متمرکز‬ ‫باال‬ ‫سرعت‬ ‫و‬ ‫رقابت‬ ‫و‬ ‫کارایی‬ ‫روی‬ ‫شده‬ ‫بهینه‬ ‫و‬ . ‫است‬ ‫گشته‬ ‫متمرکز‬ ‫رم‬ ‫از‬ ‫جمله‬ ‫از‬ ‫مختلفی‬ ‫های‬ ‫عامل‬ ‫سیستم‬ ‫روی‬ ‫بر‬ ‫ایکس‬ ‫جین‬ ‫ان‬   Linux, OS X, Solaris, AIX, HP-UX ‫انواع‬ ‫و‬   BSD ‫‌سازی‬ ‫ه‬‫پیاد‬ ‫قابل‬ . ‫میباشد‬ ‫توسعه‬ ‫اساس‬   Nginx ‫پویای‬ ‫صفحات‬ ‫محتوای‬ ‫به‬ ‫رسانی‬ ‫خدمت‬ ‫برای‬ ‫توان‬ ‫می‬ ‫را‬   HTTP ‫طریق‬ ‫از‬ ‫شبکه‬ ‫روی‬ ‫بر‬   FastCGI, SCGI ‫برای‬ ‫افزار‬ ‫نرم‬ ‫های‬ ‫دهنده‬ ‫سرویس‬ ‫و‬ ‫ها‬ ‫اسکریپت‬   WSGI ‫های‬ ‫ماژول‬ ‫یا‬ Phusion ‫عنوان‬ ‫به‬ ‫استفاده‬ ‫همچنین‬ ‫و‬   load balancer .‫نمود‬ ‫معرفی‬ ‫سرور‬ ‫وب‬ Nginx ‫موثر‬ ‫‌سازی‬ ‫ه‬‫یکپارچ‬ ‫قابلیت‬ ‫و‬ ‫باند‬ ‫پهنای‬ ‫و‬ ‫دسترسی‬ ‫کنترل‬ ،‫نهان‬ ‫حافظه‬ ،‫بارگذاری‬ ‫در‬ ‫توازن‬ ‫نظیر‬ ‫بیشتری‬ ‫های‬ ‫قابلیت‬ ‫ها‬ ‫ویژگی‬ ‫همین‬ ‫که‬ ‫داده‬ ‫جای‬ ‫خود‬ ‫در‬ ‫را‬ ‫فراوان‬ ‫کاربردی‬ ‫‌های‬ ‫ه‬‫برنام‬ ‫با‬ Nginx ‫کرد‬ ‫جهان‬ ‫مجبوب‬ ‫سرور‬ ‫وب‬ ‫دومین‬ ‫به‬ ‫تبدیل‬ ‫را‬ . ‫است‬ ‫ه‬ ‫تاریخچه‬   Nginx ‫توسعه‬   Nginx ‫توسط‬   Igor Sysoev ‫سال‬ ‫در‬ 2002 ‫سال‬ ‫جوالی‬ ‫در‬ .‫گردید‬ ‫اغاز‬ 2011 ‫نام‬ ‫به‬ ‫شرکت‬   Nginx, Inc ‫در‬   ،‫فرانسیسکو‬ ‫سان‬ ‫کالیفرنیا‬   ‫کمپانی‬ ‫یک‬ ‫واقع‬ ‫در‬ ‫شرکت‬ ‫این‬ .‫داد‬ ‫شکل‬ ‫تغییر‬   information technology   ‫ارائه‬ ‫و‬ ‫تولید‬ ‫را‬ ‫سرور‬ ‫وب‬ ‫های‬ ‫افزار‬ ‫نرم‬ ‫که‬ ‫میباشد‬ ‫های‬ ‫بررسی‬ ‫اساس‬ ‫بر‬ .‫میدهد‬   Netcraft ‫سال‬ ‫اگوست‬ ‫در‬ 2014 ،   nginx ‫شناخته‬ ‫فعال‬ ‫های‬ ‫سایت‬ ‫در‬ ‫پرطرفدار‬ ‫سرور‬ ‫وب‬ ‫دومین‬ ‫عنوان‬ ‫به‬ .‫شد‬
  • 5. ‫های‬ ‫ویژگی‬   Nginx ‫های‬ ‫قابلیت‬ ‫و‬ ‫ها‬ ‫ویژگی‬ ‫از‬ ‫برخی‬ ‫از‬   Nginx : ‫نمود‬ ‫اشاره‬ ‫زیر‬ ‫موارد‬ ‫به‬ ‫میتوان‬ • ‫از‬ ‫بیش‬ ‫مدیریت‬ ‫و‬ ‫پشتیبانی‬ ‫قابلیت‬   10,000 ( 10K ) ‫پایین‬ ‫بسیار‬ ‫رم‬ ‫مصرف‬ ‫با‬ ‫همزمان‬ ‫اتصال‬ • ‫ق‬ ‫ابلیت‬   Load balancing • ‫قابلیت‬ Fault tolerance • ‫از‬ ‫پشتیبانی‬   OCSP   ‫با‬   OpenSSL • ‫از‬ ‫پشتیبانی‬   FastCGI, SCGI, uWSGI ‫همراه‬ ‫به‬   caching • ‫با‬ ‫سازگار‬   IPv6 • ‫پروتکل‬ ‫از‬ ‫پشتبانی‬   SPDY • ‫اکسترکت‬ ‫و‬ ‫سازی‬ ‫فشرده‬   gzip • ‫نویسی‬ ‫باز‬ URL ‫یا‬   URL rewriting • ‫قابلیت‬   Bandwidth throttling • ‫های‬ ‫داده‬ ‫پردازش‬   XSLT • ‫از‬ ‫پشتیبانی‬   TLS/SSL • ‫از‬ ‫پشتیبانی‬   STARTTL ‫ها‬ • ‫سرور‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫هویت‬ ‫احراز‬ HTTP ‫خارجی‬ • ‫مختلف‬ ‫مصارف‬ ‫برای‬ ‫مختلف‬ ‫های‬ ‫ماژول‬ ‫دارای‬
  • 6. ‫مختلف‬ ‫های‬ ‫الیه‬ ‫در‬ ‫هکرها‬ ‫حمالت‬ OSI ،‫ها‬ ‫الیه‬ ‫این‬ ‫از‬ ‫یکی‬ ‫که‬ ‫‌گیرد‬ ‫ی‬‫م‬ ‫صورت‬ Application ‫و‬ ‫است‬ ‫شبکه‬ ‫الیه‬ ‫هفتمین‬ ،‫کاربرد‬ ‫الیه‬ .‫دارد‬ ‫نام‬ .‫‌افتد‬ ‫ی‬‫م‬ ‫اتفاق‬ ‫الیه‬ ‫این‬ ‫در‬ ‫حمالت‬ ‫ترین‬ ‫پیچیده‬ WAF ‫مخفف‬ Web Application Firewall .‫‌دهد‬ ‫ی‬‫م‬ ‫نشان‬ ‫العمل‬ ‫عکس‬ ‫ها‬ ‫آن‬ ‫برابر‬ ‫در‬ ‫و‬ ‫کرده‬ ‫شناسایی‬ ‫را‬ ‫حمالت‬ ‫نوع‬ ‫این‬ ‫که‬ ‫است‬ ‫فایروالی‬ :‫شامل‬ ‫حمالت‬ ‫این‬ SQL Injection XSS ‫باگ‬ CSRF Buffer Overflow Malicious Robots Information leakage Malicious and Illegal Encoding Web Server and OS Attacks OS command injection ‫باگ‬ RFI Session Hijacking DOS Protection against common attacks Site Reconnaissance Parameter Tampering Directory Traversal … ‫و‬ . ‫میباشد‬ WAF ‫‌کند؟‬ ‫ی‬‫م‬ ‫کار‬ ‫چگونه‬
  • 7. WAF ‫الیه‬ ‫روی‬ ‫بر‬ ‫که‬ ‫است‬ ‫شده‬ ‫طراحی‬ ‫ای‬ ‫گونه‬ ‫به‬ Application ‫بر‬ ‫مبتنی‬ ‫خروجی‬/‫ورودی‬ ‫ترافیک‬ ‫و‬ ‫‌گیرد‬ ‫ی‬‫م‬ ‫قرار‬ HTTP/HTTPS ‫را‬ ‫درخواست‬ ‫دو‬ ‫هر‬ ‫از‬ ‫مخربی‬ ‫ترافیک‬ ‫که‬ ‫زمان‬ ‫هر‬ .‫‌کند‬ ‫ی‬‫م‬ ‫بررسی‬ GET ‫و‬ POST ‫برخالف‬ .‫‌دهد‬ ‫ی‬‫م‬ ‫نشان‬ ‫العمل‬ ‫عکس‬ ‫سرعت‬ ‫به‬ ،‫کند‬ ‫شناسایی‬ ‫را‬ ،‫‌کنند‬ ‫ی‬‫م‬ ‫عمل‬ ‫سرورها‬ ‫از‬ ‫ایمن‬ ‫دروازه‬ ‫یک‬ ‫عنوان‬ ‫به‬ ‫فقط‬ ‫که‬ ‫معمولی‬ ‫های‬ ‫فایروال‬ WAF ( ‫گیرنده‬ ‫سرویس‬ ‫بین‬ ‫که‬ ‫است‬ ‫امنیتی‬ ‫اقدام‬ ‫یک‬ Client ‫سخت‬ ‫بسیار‬ ‫تهدیدات‬ ‫نوع‬ ‫این‬ ‫تشخیص‬ ‫که‬ ‫‌گیرند‬ ‫ی‬‫م‬ ‫انجام‬ ‫خودکار‬ ‫صورت‬ ‫به‬ ‫معموال‬ ،‫مخرب‬ ‫حمالت‬ ‫بیشترین‬ .‫دارد‬ ‫قرار‬ ‫سرور‬ ‫وب‬ ‫و‬ ) .‫نیست‬ ‫شناسایی‬ ‫قابل‬ ‫و‬ ‫شده‬ ‫طراحی‬ ‫انسان‬ ‫ترافیک‬ ‫از‬ ‫تقلید‬ ‫برای‬ ‫غالبا‬ ‫زیرا‬ ‫است؛‬ WAF ‫همه‬ ‫برای‬ ‫را‬ ‫پاسخ‬ ‫و‬ ‫درخواست‬ ‫هر‬ ‫از‬ ‫عمیقی‬ ‫بازرسی‬ .‫‌دهد‬ ‫ی‬‫م‬ ‫انجام‬ ‫وب‬ ‫ترافیک‬ ‫متداول‬ ‫اشکاالت‬ ‫به‬ ‫بازرسی‬ ‫این‬ WAF .‫کند‬ ‫جلوگیری‬ ‫سرور‬ ‫به‬ ‫ها‬ ‫آن‬ ‫رسیدن‬ ‫از‬ ‫و‬ ‫کند‬ ‫مسدود‬ ‫و‬ ‫شناسایی‬ ‫را‬ ‫تهدیدات‬ ‫تا‬ ‫‌کند‬ ‫ی‬‫م‬ ‫کمک‬ ‫های‬ ‫ماژول‬ ‫از‬ ‫مورد‬ ‫چند‬ ‫بررسی‬ ‫به‬ ‫زیر‬ ‫در‬ nginx ‌ : ‫پرداخت‬ ‫خواهم‬ ‫را‬
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19. ‫کد‬ ‫سورس‬ ‫نیازمند‬ ‫کامپیایل‬ ‫جهت‬ ‫ادامه‬ ‫در‬ nginx ‫و‬ naxsi . ‫مینماییم‬ ‫دانلود‬ ‫را‬ ‫نظر‬ ‫مد‬ ‫‌های‬ ‫ل‬‫فای‬ . ‫هستیم‬
  • 20. ‫ماژول‬ ‫ساخت‬ ‫برای‬ ‫ها‬ ‫نیاز‬ ‫پیش‬ naxsi ‫ورژن‬ ‫به‬ ‫نسبت‬ nginx ‌ : ‫میباشد‬ ‫زیر‬ ‫شرح‬ ‫به‬ • Debian Base Distro • GCC • make • nginx • libpcre3-dev ‌ : ‫میکنیم‬ ‫نصب‬ ‫را‬ ‫خود‬ ‫نظر‬ ‫مد‬ ‫دبیان‬ ‫توزیع‬ ‫ادامه‬ ‫در‬ ‫شکل‬ 1
  • 58. ‌ : ‫نیاز‬ ‫مورد‬ ‫های‬ ‫بسته‬ ‫نصب‬ ‫شکل‬ 39 ‫کامپایلر‬ ‫نصب‬ - gcc ‫شکل‬ 40 ‫بسته‬ ‫نصب‬ - libpcre3
  • 59. ‫شکل‬ 41 ‫کامپایل‬ : nginx ‫ماژول‬ ‫‌با‬ naxsi ‫از‬ ‫را‬ ‫ها‬ ‫پارامتر‬ : ‫نکته‬ nginx -V . ‫آوریم‬ ‫می‬ ‫بدست‬ ‫مانند‬ . ‫باشد‬ ‫نصب‬ ‫باید‬ ‫میگیرد‬ ‫صورت‬ ‫کامپایل‬ ‫آن‬ ‫در‬ ‫که‬ ‫سیستم‬ ‫در‬ ‫ها‬ ‫پارامتر‬ ‫به‬ ‫نسبت‬ ‫نیاز‬ ‫مورد‬ ‫های‬ ‫‌پکیج‬ : ‫نکته‬ libssl , zlib … , ‫شکل‬ 42 - ‫ماژول‬ ‫ساخت‬
  • 60. ‫شکل‬ 43 - ‫شدن‬ ‫ساخته‬ ‫و‬ ‫شدن‬ ‫کامپایل‬ ‫شاهد‬ ‫ادامه‬ ‫در‬ ngx_http_naxsi_module.so ‫ورژن‬ ‫برای‬ 1.16.1 nginx . ‫هستیم‬ ‫‌برای‬ : ‫نکته‬ compatibility ‫های‬ ‫پارامتر‬ ‫به‬ ‫مربوط‬ ‫های‬ ‫بسته‬ ‫هست‬ ‫نیاز‬ nginx ‫دستور‬ ‫از‬ ‫استفاده‬ ‫با‬ . ‫دهیم‬ ‫انجام‬ ‫را‬ ‫کامپایل‬ ‫و‬ ‫نصب‬ ‫را‬ nginx -V . ‫میباشد‬ ‫‌پذیر‬ ‫ن‬‫امکا‬ ‫نظر‬ ‫مد‬ ‫های‬ ‫ماژول‬ ‫و‬ ‫ها‬ ‫پارامتر‬ ‫مشاهده‬ ‫امکان‬ ‫اگر‬ : ‫نکته‬ naxsi ‫در‬ ‫تست‬ ‫این‬ ‫در‬ ‫ما‬ . ‫است‬ ‫موجود‬ ‫‌ها‬ ‫ن‬‫آ‬ ‫برای‬ ‫شده‬ ‫کامپایل‬ ‫بسته‬ ‫فدورا‬ ‫یا‬ ‫و‬ ‫باشد‬ ‫شده‬ ‫نصب‬ ‫ها‬ ‫بیس‬ ‫دبیان‬ ‫در‬ centos ‫کردیم‬ ‫نصب‬ ‫به‬ ‫اقدام‬ ‫در‬ ‫ماژول‬ ‫این‬ ‫کردن‬ ‫فعال‬ ‫و‬ ‫کردن‬ ‫اضافه‬ ‫جهت‬ ‫این‬ ‫حال‬ nginx.conf . ‫میکنیم‬ ‫اعمال‬ ‫را‬ ‫نظر‬ ‫مد‬ ‫کانفیق‬ ‌ : ‫نمونه‬ ‫برای‬ : ‫داریم‬ ‫فایل‬ ‫دو‬ ‫‌ما‬ : ‫نکته‬ naxsi_core.rules ‫پروژه‬ ‫در‬ ‫(که‬ naxsi ) ‫است‬ ‫موجود‬ ‫و‬ ngx_http_naxsi_module.so . ) ‫ساختیم‬ ‫ما‬ ‫(که‬ ‫فایل‬ ngx_http_naxsi_module.so ‫از‬ ‫استفاده‬ ‫با‬ ‫را‬ load_module ‫اقدام‬ ‫به‬ . ‫میکنیم‬ ‫کردن‬ ‫لود‬ # Edit this 'include' directive to point to your naxsi_core.rules file include /etc/nginx/naxsi_core.rules; server {
  • 61. listen 80; location / { root /usr/share/nginx/html; SecRulesEnabled; #enable naxsi LearningMode; #enable learning mode LibInjectionSql; #enable libinjection support for SQLI LibInjectionXss; #enable libinjection support for XSS # Define where blocked requests go DeniedUrl "/50x.html"; # CheckRules, determining when NAXSI needs to take action CheckRule "$SQL >= 8" BLOCK; CheckRule "$RFI >= 8" BLOCK; CheckRule "$TRAVERSAL >= 4" BLOCK; CheckRule "$EVADE >= 4" BLOCK; CheckRule "$XSS >= 8" BLOCK; # Don’t forget the error_log, where blocked requests are logged error_log /tmp/naxsi.log; } error_page 500 502 503 504 /50x.html; }
  • 62. ‫کانفیق‬ ‫ساختار‬ ‫از‬ ‫قسمتی‬ ‫شرح‬ nginx : ‫نود‬ ‫در‬ ‫موجود‬ ‫فایل‬ ‫کانفیق‬ ‫بررسی‬ ‫به‬ ‫سپس‬ ‫داده‬ ‫قرار‬ ‫بررسی‬ ‫مورد‬ ‫را‬ ‫فرضی‬ ‫سناروی‬ ‫یک‬ ‫زیر‬ ‫در‬ naxsi . ‫نمود‬ ‫خواهیم‬ ‫بررسی‬ ‫را‬ ‫ایجاد‬ ‫دیگر‬ ‫نکته‬ load balancer ‫ساختار‬ ‫مثال‬ ‫این‬ ‫در‬ ‫ما‬ . ‫است‬ ‫بیشتر‬ ‫اطمینان‬ ‫حصول‬ ‫برای‬ load balancing . ‫کردیم‬ ‫بررسی‬ ‫نیز‬ ‫را‬ ‫برای‬ ‫همچنین‬ . ‫گردد‬ ‫بسیار‬ ‫ها‬ ‫درخواست‬ ‫و‬ ‫ترافیک‬ ‫میزان‬ ‫و‬ ‫شود‬ ‫بیشتر‬ ‫سایت‬ ‫کاربران‬ ‫تعداد‬ ‫وقتی‬ HA ‫و‬ reliability ‫ایجاد‬ ‫به‬ ‫نیاز‬ loadbalancing ‫بین‬ ‫در‬ ‫را‬ ‫شده‬ ‫ارسال‬ ‫‌های‬ ‫ت‬‫درخواس‬ ‫که‬ ‫هستیم‬ ‫سرور‬ ‫وب‬ ‫یک‬ ‫نیازمند‬ ‫حال‬ ‫این‬ ‫با‬ . ‫هستیم‬ instance ‫پخش‬ ‫موجود‬ ‫های‬ ‫بین‬ ‫در‬ ‫‌ها‬ ‫ت‬‫ریکوئس‬ ‫تعداد‬ ‫کار‬ ‫این‬ ‫انجام‬ ‫با‬ .‫کند‬ instance ‫از‬ ‫میتوانیم‬ ‫اینکار‬ ‫انجام‬ ‫برای‬ .‫میشوند‬ ‫تقسیم‬ ‫ها‬ nginx .‫کنیم‬ ‫استفاده‬ ‫مانند‬ ‫دیگر‬ ‫‌های‬ ‫ه‬‫برنام‬ ‫از‬ ‫میتوانیم‬ ‫مفهوم‬ ‫این‬ ‫برای‬ ‫همچنین‬ squid , varnish , haproxy . ‫کنیم‬ ‫استفاده‬ ‫نیز‬ nginx ‫قابلیت‬ load balancing ‫سازی‬ ‫پیاده‬ ‫برای‬ .‫دارد‬ ‫را‬ load balancing ‫در‬ nginx ‫فایل‬ ‫در‬ ‫باید‬ nginx.conf ‫نوع‬ ‫از‬ ‫گروه‬ ‫یک‬ upstream ‫کانتکست‬ ‫در‬ ‫کنید‬ ‫ایجاد‬ http . http { upstream myserver { server server1.example.com; server server2.example.com; server server3.example.com; } }
  • 63. ‫نام‬ ‫به‬ ‫گروه‬ ‫یک‬ ‫باال‬ ‫کانفیگ‬ ‫در‬ myserver ‫سه‬ ‫یعنی‬ .‫‌باشد‬ ‫ی‬‫م‬ ‫سرور‬ ‫سه‬ ‫شامل‬ ‫که‬ ‫‌ایم‬ ‫ه‬‫کرد‬ ‫ایجاد‬ instance ‫و‬ ‫هستند‬ ‫اجرا‬ ‫حال‬ ‫در‬ ‫برنامه‬ ‫از‬ ‫کانتکس‬ ‫در‬ ‫باید‬ ‫سپس‬ .‫کنیم‬ ‫ارسال‬ ‫‌ها‬ ‫ر‬‫سرو‬ ‫این‬ ‫روی‬ ‫بر‬ ‫را‬ ‫شده‬ ‫ارسال‬ ‫‌های‬ ‫ت‬‫ریکوئس‬ ‫میتوانیم‬ server ‫کانتکست‬ ‫درون‬ ‫هم‬ ‫کانتکست‬ ‫این‬ ( http ‫نوع‬ ‫از‬ ‫بالک‬ ‫یک‬ ) ‫دارد‬ ‫قرار‬ location ‫کلمه‬ ‫از‬ ‫بعد‬ .‫کنیم‬ ‫ایجاد‬ location ‫را‬ ‫میشوند‬ ‫ارسال‬ ‫آن‬ ‫به‬ ‫‌ها‬ ‫ت‬‫درخواس‬ ‫که‬ ‫را‬ ‫مسیری‬ ‫باید‬ ‫از‬ ‫بعد‬ / ‫نوشتن‬ .) / ( ‫است‬ ‫شده‬ ‫نوشته‬ ‫سایت‬ ‫وب‬ ‫روت‬ ‫همان‬ ‫پایین‬ ‫مثال‬ ‫در‬ ‫که‬ ‫بنویسید‬ location .‫میشود‬ ‫شامل‬ ‫را‬ ‫‌ها‬ ‫ت‬‫درخواس‬ ‫تمامی‬ ‫به‬ ‫که‬ ‫را‬ ‫‌هایی‬ ‫ت‬‫درخواس‬ ‫فقط‬ ‫میتوانید‬ ‫همچنین‬ api ‫از‬ / ‫جای‬ ‫به‬ ‫میتوانید‬ ‫که‬ ‫کنید‬ ‫فیلتر‬ ،‫میشوند‬ ‫ارسال‬ ‫ها‬ api ‫کار‬ ‫این‬ ‫با‬ .‫کنید‬ ‫استفاده‬ / ‫که‬ ‫‌هایی‬ ‫ت‬‫درخواس‬ ‫تمامی‬ url ‫با‬ ‫آنها‬ api ‫بالک‬ ‫وارد‬ ‫شود‬ ‫شروع‬ / location .‫میشوند‬ ‫از‬ ‫باید‬ ‫اجرا‬ ‫حال‬ ‫در‬ ‫‌های‬ ‫ه‬‫برنام‬ ‫بین‬ ‫در‬ ‫‌ها‬ ‫ت‬‫درخواس‬ ‫کردن‬ ‫ارسال‬ ‫برای‬ ‫سپس‬ proxy_pass ‫کلمه‬ ‫از‬ ‫بعد‬ .‫کنیم‬ ‫استفاده‬ proxy_pass ‫نام‬ ‫باید‬ upstream ‫‌های‬ ‫ر‬‫سرو‬ ‫بین‬ ‫در‬ / ‫به‬ ‫شده‬ ‫ارسال‬ ‫‌های‬ ‫ت‬‫درخواس‬ ‫تمامی‬ ‫اینکار‬ ‫انجام‬ ‫با‬ .‫کنیم‬ ‫وارد‬ ،‫‌ایم‬ ‫ه‬‫نوشت‬ ‫باال‬ ‫در‬ ‫که‬ ‫را‬ ‫ی‬ server ‫پخش‬ .‫میشوند‬ http { upstream myserver { server server1.example.com; server server2.example.com; server server3.example.com; } server { location / { proxy_pass http://server; } } } ‫سرور‬ ‫وب‬ nginx ‫الگوریتم‬ ‫از‬ ‫پیشفرض‬ ‫طور‬ ‫به‬ Round robin ‫میتوانیم‬ ‫البته‬ .‫میکند‬ ‫استفاده‬ ‫‌ها‬ ‫ر‬‫سرو‬ ‫بین‬ ‫در‬ ‫‌ها‬ ‫ت‬‫درخواس‬ ‫کردن‬ ‫پخش‬ ‫برای‬ .‫بدهیم‬ ‫تغییر‬ ‫را‬ ‫الگوریتم‬ ‫این‬ .‫شود‬ ‫ارسال‬ ‫درخواست‬ ‫چند‬ ‫‌ها‬ ‫ر‬‫سرو‬ ‫از‬ ‫هرکدام‬ ‫به‬ ‫که‬ ‫کنیم‬ ‫مشخص‬ ‫میتوانیم‬ ‫مثال‬ ‫طور‬ ‫به‬ ‫افزودن‬ ‫با‬ weight ‫اگر‬ ‫مثال‬ ‫طور‬ ‫به‬ ‫که‬ ‫میکنم‬ ‫مشخص‬ ‫‌ها‬ ‫ر‬‫سرو‬ ‫نام‬ ‫کنار‬ ‫در‬ 7 ،‫شود‬ ‫ارسال‬ ‫سرور‬ ‫به‬ ‫درخواست‬ 5 ‫به‬ ‫مورد‬ server1 ‫ارسال‬ ‫و‬ ‫میشود‬ 2 ‫به‬ ‫مورد‬ server2 ‫سرور‬ ‫عنوان‬ ‫به‬ ‫سرور‬ ‫یک‬ ‫که‬ ‫کنیم‬ ‫مشخص‬ ‫میتوانیم‬ ‫همچنین‬ . backup ‫مانند‬ ‫باشد‬ server4 . ‫کلمه‬ ‫کردن‬ ‫اضافه‬ ‫با‬ ‫میتوانید‬ ‫نباشد‬ ‫دسترس‬ ‫در‬ ‫سروری‬ ‫اگر‬ down ‫مانند‬ ‫کنید؛‬ ‫جلوگیری‬ ‫آن‬ ‫به‬ ‫درخواست‬ ‫ارسال‬ ‫از‬ ،‫سرور‬ ‫نام‬ ‫از‬ ‫بعد‬ server3 ‫کلمه‬ ‫از‬ ‫قبل‬ ‫یا‬ ‫و‬ server .‫دهید‬ ‫قرار‬ # ‫عالمت‬ ‫یک‬ upstream myserver { server server1.example.com weight=5;
  • 64. server server2.example.com weight=2; server server3.example.com down; server server4.example.com backup; } ‫سرور‬ ‫کار‬ ‫این‬ ‫انجام‬ ‫با‬ server4 ‫سرور‬ ‫عنوان‬ ‫به‬ backup ‫به‬ ‫ریکوئستی‬ ‫هیچ‬ ،‫باشند‬ ‫دسترس‬ ‫در‬ ‫سرورها‬ ‫بقی‬ ‫ما‬ ‫زمانیکه‬ ‫تا‬ ‫و‬ ‫است‬ ‫شده‬ ‫معرفی‬ ‫سرور‬ server4 ‫‌های‬ ‫ر‬‫سرو‬ ‫تمامی‬ ‫اگر‬ .‫نمیشود‬ ‫ارسال‬ server1 ‫و‬ server2 ‫آنگاه‬ ،‫شوند‬ ‫خارج‬ ‫دسترس‬ ‫از‬ nginx ‫را‬ ‫شده‬ ‫ارسال‬ ‫‌های‬ ‫ت‬‫درخواس‬ ‫سرور‬ ‫به‬ backup ‫یعنی‬ server4 .‫میکند‬ ‫ارسال‬ ‫پیشفرض‬ ‫طور‬ ‫به‬ ‫البته‬ nginx ‫به‬ ‫مربوط‬ ‫تنظیمات‬ ‫سری‬ ‫یک‬ ‫باید‬ ‫و‬ ‫نمیکند‬ ‫بررسی‬ ‫را‬ ‫سرورها‬ ‫سالمت‬ health_check .‫کنیم‬ ‫ثبت‬ ‫را‬ ‫دستور‬ ‫کردن‬ ‫اضافه‬ ‫با‬ health_check ‫پایین‬ ‫در‬ proxy_pass ‫سرور‬ ‫وب‬ nginx ‫هر‬ 5 ‫سرورهای‬ ‫به‬ ‫را‬ ‫ریکوئست‬ ‫یک‬ ‫بار‬ ‫یک‬ ‫ثانیه‬ server ‫کدهای‬ ‫از‬ ‫خارج‬ ‫کدی‬ ‫ریسپانس‬ ‫‌ها‬ ‫ر‬‫سرو‬ ‫از‬ ‫هرکدام‬ ‫اگر‬ ‫و‬ ‫میکند‬ ‫ارسال‬ 200 ‫تا‬ 399 ‫سرورها‬ ‫آن‬ ‫به‬ ‫را‬ ‫بعدی‬ ‫‌های‬ ‫ت‬‫درخواس‬ ،‫کنند‬ ‫ارسال‬ ‫را‬ .‫نمیکند‬ ‫ارسال‬ server { location / { proxy_pass http://server; health_check; } } ‫دستور‬ ‫کنار‬ ‫در‬ health_check ‫درخواست‬ ‫که‬ ‫کنیم‬ ‫مشخص‬ ‫میتوانیم‬ ‫مثال‬ ‫طور‬ ‫به‬ .‫کنیم‬ ‫مشخص‬ ‫هم‬ ‫را‬ ‫پارامتر‬ ‫سری‬ ‫یک‬ ‫میتوانیم‬ health_check ‫چه‬ ‫به‬ ‫را‬ uri .‫کند‬ ‫ارسال‬ ‫را‬ ‫درخواست‬ ‫پورتی‬ ‫چه‬ ‫به‬ ‫یا‬ ‫و‬ ‫کند‬ ‫ارسال‬ ‫ای‬ server { location / { proxy_pass http://server;
  • 65. health_check port=8080; #health_check uri=/healthcheck; } } .)‫میشود‬ ‫استفاده‬ # ‫از‬ ‫دستور‬ ‫یک‬ ‫کردن‬ ‫کامنت‬ ‫(برای‬ ‫کردن‬ ‫مشخص‬ ‫برای‬ ‫را‬ ‫سفارشی‬ ‫درخواست‬ ‫یک‬ ‫میتوانیم‬ ‫همچنین‬ health_check :‫کنیم‬ ‫ایجاد‬ http { #... match welcome { status 200; header Content-Type = text/html; body ~ "Welcome to nginx!"; } server { #... location / { proxy_pass http://server; health_check match=welcome; } } } ‫کد‬ ‫استتوس‬ ‫باید‬ ‫سرورها‬ ‫از‬ ‫هرکدام‬ ‫بودن‬ ‫دسترس‬ ‫در‬ ‫دادن‬ ‫نشان‬ ‫برای‬ ‫که‬ ‫‌ایم‬ ‫ه‬‫کرد‬ ‫مشخص‬ ‫باال‬ ‫کانفیگ‬ ‫در‬ 200 ‫و‬ ‫شود‬ ‫برگردانده‬ body ! ‫حاوی‬ ‫شده‬ ‫دریافت‬ Welcome to nginx .‫باشد‬ : ‫نکته‬ match ‫و‬ health_check ‫تجاری‬ ‫نسخه‬ ‫در‬ nginx .‫‌باشند‬ ‫ی‬‫م‬ ‫استفاده‬ ‫قابل‬ ‫پورت‬ ‫از‬ ‫که‬ ‫هایی‬ ‫درخواست‬ ‫تمام‬ ‫مثال‬ ۸۰ ‫پورت‬ ‫از‬ ‫باید‬ ،‫رسد‬ ‫می‬ ‫سرور‬ ‫به‬ ۳۰۰۰ .‫کنند‬ ‫گذر‬ ‫سرور‬ ‫داخل‬ ‫کانفیگ‬ ‫فایل‬ ‫وارد‬ ‫ابتدا‬ ‫اینکار‬ ‫برای‬ nginx : ‫دارد‬ ‫قرار‬ ‫زیر‬ ‫مسیر‬ ‫در‬ ‫فرض‬ ‫پیش‬ ‫صورت‬ ‫به‬ ‫فایل‬ ‫این‬ .‫شوید‬ /etc/nginx/sites-available/default
  • 66. ‫بالک‬ ‫با‬ ‫شما‬ ‫سرور‬ ‫هر‬ 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
  • 67. ‫برنامه‬ ‫اجرای‬ ‫از‬ ‫بعد‬ node ‫پورت‬ ‫در‬ )‫دیگری‬ ‫سرور‬ ‫هر‬ ‫(یا‬ ۳۰۰۰ ‫پورت‬ ‫های‬ ‫ریکویست‬ ‫تمام‬ ، ۸۰ ‫این‬.‫شد‬ ‫خواهد‬ ‫پردازش‬ ‫سرور‬ ‫این‬ ‫توسط‬ ‫توسط‬ ‫کار‬ Reverse Proxy .‫شود‬ ‫می‬ ‫انجام‬ ‫ساختار‬ ‫بهتر‬ ‫درک‬ ‫برای‬ ‫بیشتر‬ ‫تنظیمات‬ nginx : :‫کنید‬ ‫اضافه‬ ‫خود‬ ‫تنظیمات‬ ‫فایل‬ ‫به‬ ‫نیز‬ ‫بیشتری‬ ‫تنظیماتی‬ ‫توانید‬ ‫می‬ ‫شما‬ ‫همچنین‬ ‫نسخه‬ ‫تنظیم‬ 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;
  • 68. :‌‫تنظیمات‬ ‫فایل‬ ‫تر‬ ‫کامل‬ ‫نسخه‬ 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; } }