يكي از محبوب ترين سرورهاي وب در جهان است و مسئوليت ميزباني برخي از بزرگترين و پر ترافيك ترين سايتها در اينترنت را دارد. يك انتخاب ساده است كه مي تواند به عنوان سرور مجازي وب يا پروكسي معكوس استفاده شود.
در اين راهنما ، ما در مورد چگونگي نصب Nginx در سرور مجازي Ubuntu 20.04 خود ، تنظيم فايروال ، مديريت فرايند Nginx و ايجاد بلوك هاي سرور مجازي براي ميزباني بيش از يك دامنه از يك سرور واحد بحث خواهيم كرد.
پيش نيازها
قبل از شروع اين راهنما ، بايد يك كاربر معمولي و غير ريشه با امتيازات sudo در سرور مجازي خود تنظيم كنيد. با پيروي از راهنماي ستاپ اوليه سرور مجازي براي اوبونتو 20.04 مي توانيد نحوه پيكربندي يك حساب كاربري معمولي را ياد بگيريد.
هنگامي كه يك حساب كاربري در دسترس داشتيد ، به عنوان كاربر غير ريشه خود وارد شويد.
مرحله 1 – نصب Nginx
از آنجا كه Nginx در مخازن پيش فرض اوبونتو موجود است ، مي توان آن را از طريق اين مخازن با استفاده از سيستم بسته بندي apt نصب كرد.
از آنجا كه اين اولين تعامل ما با سيستم بسته بندي apt در اين بخش است ، ديركتوري بسته هاي محلي خود را به روز مي كنيم تا به جديدترين ليست هاي بسته دسترسي داشته باشيم. پس از آن ، مي توانيم nginx را نصب كنيم:
⦁ $ sudo apt update

⦁ $ sudo apt install nginx
پس از پذيرش روال ، apt ، Nginx و هرگونه متعلقات لازم را براي سرور مجازي شما نصب مي كند.
مرحله 2 – تنظيم فايروال
قبل از آزمايش Nginx ، براي دسترسي به سرويس بايد نرم افزار فايروال تنظيم شود. Nginx پس از نصب ، خود را به عنوان سرويسي با ufw ثبت مي كند ، و اين باعث مي شود دسترسي Nginx ساده باشد.
با تايپ دستور زير تنظيمات برنامه را كه ufw مي داند چگونه با آن كار كند ليست كنيد:
⦁ $ sudo ufw app list

بايد ليستي از پروفايل هاي برنامه را دريافت كنيد:
Output
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH

همانطور كه از خروجي نشان داده شده است ، سه پروفايل براي Nginx در دسترس است:
⦁ Nginx Full: اين پروفايل هر دو پورت 80 (ترافيك وب عادي و بدون رمزگذاري) و پورت 443 (ترافيك رمزگذاري شده TLS / SSL) را باز مي كند
⦁ Nginx HTTP: اين نمايه فقط پورت 80 را باز مي كند (ترافيك وب عادي و بدون رمزگذاري)
⦁ Nginx HTTPS:اين پروفايل فقط پورت 443 را باز مي كند (ترافيك رمزگذاري شده TLS / SSL)
توصيه مي شود محدودترين نمايه اي را كه هنوز امكان ترافيك تنظيم شده خود را فراهم مي كند ، فعال كنيد. در حال حاضر ، ما فقط نياز به ترافيك در پورت 80 داريم.
مي توانيد آن را با تايپ كردن دستور زير فعال كنيد:
⦁ $ sudo ufw allow ‘Nginx HTTP’

مي توانيد تغيير را با تايپ اين دستور تأييد كنيد:
⦁ $ sudo ufw status

خروجي نشان خواهد داد كه ترافيك HTTP مجاز است:
Output
Status: active

To Action From
— —— —-
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)

مرحله 3 – بررسي سرور مجازي وب خود
در پايان مراحل نصب ، اوبونتو 20.04 ، Nginx را شروع مي كند. وب سرور مجازي اكنون راه اندازي و در حال كار ميباشد.
ما مي توانيم با تايپ كردن اين دستور زير سيستم شروع كار systemd  را بررسي كنيم تا مطمئن شويم كه اين سرويس در حال اجراست:
⦁ $ systemctl status nginx

Output
● nginx.service – A high performance web server and a reverse غير مجاز مي باشد server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-04-20 16:08:19 UTC; 3 days ago
Docs: man:nginx(8)
Main PID: 2369 (nginx)
Tasks: 2 (limit: 1153)
Memory: 3.5M
CGroup: /system.slice/nginx.service
├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─2380 nginx: worker process

همانطور كه با اين دستور تأييد شده است ، اين سرويس با موفقيت شروع به كار نموده است. با اين حال ، بهترين راه براي آزمايش آن، درخواست صفحه از Nginx است.
شما مي توانيد با رفتن به آدرس IP سرور مجازيخود به صفحه فرود پيش فرض Nginx دسترسي داشته باشيد تا تأييد كنيد كه نرم افزار به درستي كار مي كند. اگر آدرس IP سرور مجازي خود را نمي دانيد ، مي توانيد آن را با استفاده از ابزار icanhazip.com پيدا كنيد ، كه آدرس IP عمومي شما را همانطور كه از يك مكان ديگر در اينترنت دريافت كرده است به شما مي دهد:
⦁ $ curl -4 icanhazip.com

اكنون كه آدرس IP سرور مجازي خود را داريد ، آن را در نوار آدرس مرورگر خود وارد كنيد:
http://your_server_ip

بايد صفحه فرود پيش فرض Nginx را دريافت كنيد:

اگر در اين صفحه هستيد ، سرور مجازي شما به درستي كار مي كند و آماده مديريت است.
مرحله 4 – مديريت فرايند Nginx
اكنون كه سرور مجازي وب خود را فعال كرده ايد ، اجازه دهيد برخي دستورات مديريت پايه را مرور كنيم.
براي متوقف كردن سرور مجازي وب خود ، تايپ كنيد:
⦁ $ sudo systemctl stop nginx

براي شروع سرور مجازي وب هنگام متوقف بودن ، تايپ كنيد:
⦁ $ sudo systemctl start nginx

براي متوقف كردن و شروع مجدد سرويس ، تايپ كنيد:
⦁ $ sudo systemctl restart nginx

اگر فقط تغييرات پيكربندي را انجام مي دهيد ، Nginx اغلب مي تواند بدون افت اتصالات مجدد لود شود. براي انجام اين كار ، تايپ كنيد:
⦁ $ sudo systemctl reload nginx

به طور پيش فرض ، Nginx به گونه اي پيكربندي شده است تا وقتي سرور مجازي بوت ميشود ، به طور خودكار شروع گردد. اگر اين چيزي نيست كه شما مي خواهيد ، مي توانيد با تايپ كردن دستور زير، اين رفتار را غيرفعال كنيد:
⦁ $ sudo systemctl disable nginx

براي فعال كردن مجدد سرويس براي راه اندازي در هنگام بوت شدن ، مي توانيد اين دستور را تايپ كنيد:
⦁ $ sudo systemctl enable nginx

اكنون دستورات مديريت پايه را آموخته ايد و بايد براي پيكربندي سايت آماده باشيد تا ميزبان بيش از يك دامنه باشد.
مرحله 5 – تنظيم بلوك هاي سرور مجازي (توصيه مي شود)
هنگام استفاده از وب سرور مجازي Nginx ، مي توان از بلوك هاي سرور مجازي (مشابه هاست هاي مجازي در Apache) براي كپسوله كردن جزئيات پيكربندي و ميزباني بيش از يك دامنه از يك سرور مجازي واحد استفاده كرد. دامنه اي به نام your_domain.com را راه اندازي مي كنيم ، اما شما بايد اين نام را با نام دامنه خود جايگزين كنيد.
Nginx در اوبونتو 20.04 داراي يك بلوك سرور مجازي است كه بصورت پيش فرض فعال شده است تا براي ارائه اسناد از يك ديركتوري در / var / www / html پيكربندي شود. اگرچه براي يك سايت واحد به خوبي كار مي كند ، اگر ميزبان چندين سايت باشيد ، مي تواند مشكل ساز شود. به جاي تغيير / var / www / html ، بياييد يك ساختار دايركتوري در / var / www براي سايت your_domain.com ايجاد كنيم ، و / var / www / html را به عنوان دايركتوري پيش فرض رها كنيم تا در صورت عدم تطابق درخواست كلاينت با هيچ سايت ديگر، اين ديركتوري ارائه شود.
دايركتوري براي your_domain.com را به شرح زير ايجاد كنيد ، از پرچم -p براي ايجاد هرگونه ديركتوري parent لازم
استفاده نماييد.
⦁ sudo mkdir -p /var/www/your_domain/html

سپس ، مالكيت دايركتوري را به متغير محيط USER $ اختصاص دهيد:
⦁ sudo chown -R $USER:$USER /var/www/your_domain/html

اگر مقدار umask خود را تغيير نداده باشيد ، مجوزهاي ريشه وب شما بايد صحيح باشد كه مجوزهاي پيش فرض فايل را تعيين مي كند. براي اطمينان از صحيح بودن مجوزهاي تان و اجازه دادن به مالك براي خواندن ، نوشتن و اجراي فايل ها در حالي كه فقط امكان خواندن و اجراي مجوزها براي گروه ها و ديگران مجاز است ، مي توانيد دستور زير را وارد كنيد:
⦁ $ sudo chmod -R 755 /var/www/your_domain

سپس ، با استفاده از nano يا ويرايشگر مورد علاقه خود ، صفحه index.html نمونه را ايجاد كنيد:
⦁ $ nano /var/www/your_domain/html/index.html

در داخل ، نمونه HTML زير را اضافه كنيد:
/var/www/your_domain/html/index.html


Welcome to your_domain!


Success! The your_domain server block is working!



پس از اتمام ، فايل را با تايپ كردن CTRL و X و سپس Y و ENTER ذخيره كنيد.
براي اينكه Nginx بتواند اين محتوا را ارائه دهد ، لازم است يك بلوك سرور مجازي را با دستورالعمل هاي درست ايجاد كنيد. به جاي تغيير مستقيم پيكربندي پيش فرض ، بياييد فايل جديدي را در /etc/nginx/sites-available/your_domain.com ايجاد كنيم:
⦁ $ sudo nano /etc/nginx/sites-available/your_domain

در بلوك پيكربندي زير پيست كنيد كه مشابه پيش فرض است ، اما براي ديركتوري جديد و نام دامنه به روز ميباشد:
/etc/nginx/sites-available/your_domain
server {
listen 80;
listen [::]:80;

root /var/www/your_domain/html;
index index.html index.htm index.nginx-debian.html;

server_name your_domain www.your_domain;

location / {
try_files $uri $uri/ =404;
}
}

توجه كنيد كه پيكربندي ريشه را به ديركتوري جديد و server_name را به نام دامنه خود به روز كرده ايم.
در مرحله بعد ، اجازه خواهيم داد فايل را با ايجاد پيوندي از آن به ديركتوري sites-enabled ، كه Nginx هنگام راه اندازي از آن مي خواند ، فعال كنيم:
⦁ $ sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

اكنون دو بلوك سرور مجازي فعال و پيكربندي شده اند تا به درخواست ها بر اساس دستورالعمل هاي listen و server_name آنها پاسخ دهند (مي توانيد درباره نحوه پردازش Nginx اين دستورالعمل ها در اين لينك بيشتر بخوانيد):
⦁ your_domain.com: به درخواست هاي your_domain.com و www.your_domain.com پاسخ خواهد داد.
⦁ •default: به هر درخواست در پورت 80 كه با دو بلوك ديگر مطابقت ندارد پاسخ خواهد داد.
براي جلوگيري از بروز مشكل حافظه كه مي تواند ناشي از افزودن نام سرور مجازي اضافي باشد ، لازم است يك مقدار واحد را در فايل /etc/nginx/nginx.conf تنظيم كنيد. فايل را باز كنيد:
⦁ $ sudo nano /etc/nginx/nginx.conf

دستورالعمل server_names_hash_bucket_size را پيدا كنيد و نماد # را حذف كنيد تا خط را باطل كنيد. اگر از nano استفاده مي كنيد ، مي توانيد با فشار دادن CTRL و w به سرعت كلمات موجود در فايل را جستجو كنيد.
/etc/nginx/nginx.conf

http {

server_names_hash_bucket_size 64;

}

پس از اتمام فايل را ذخيره كنيد و ببنديد.
سپس ، بررسي كنيد تا مطمئن شويد كه هيچ خطاي نحوي در هيچ يك از فايل هاي Nginx شما وجود ندارد:
⦁ $ sudo nginx -t

اگر مشكلي وجود ندارد ، Nginx را ريستارت كنيد تا تغييرات خود را فعال نماييد:
⦁ $ sudo systemctl restart nginx

Nginx اكنون بايد نام دامنه شما را ارائه دهد. مي توانيد با رفتن به http://your_domain.com ، جايي كه بايد چيزي شبيه به اين تصوير را مشاهده كنيد ، اين فرآيند را آزمايش كنيد:

مرحله ششم – آشنايي با فايل ها و دستورالعمل هاي مهم Nginx
اكنون كه مي دانيد چگونه خود سرويس Nginx را مديريت كنيد ، بايد چند دقيقه وقت بگذاريد تا با چند ديركتوري و فايل مهم آشنا شويد.
محتوا
⦁ / var / www / html: محتواي وب واقعي ، كه به طور پيش فرض فقط شامل صفحه پيش فرض Nginx است كه قبلاً ديديد ، از ديركتوري / var / www / html ارائه مي شود. با تغيير فايل هاي پيكربندي Nginx قابل تغيير است.
پيكربندي سرور
⦁ / etc / nginx: ديركتوري پيكربندي Nginx . همه فايل هاي پيكربندي Nginx در اينجا قرار دارند.
⦁ /etc/nginx/nginx.conf: فايل اصلي پيكربندي Nginx . مي تواند براي ايجاد تغيير در تنظيمات جهاني Nginx اصلاح شود.
⦁ / etc / nginx / sites-available /: دايركتوري كه مي توان در آن بلوك هاي سرور مجازي هر سايت ذخيره شود. Nginx از فايل هاي پيكربندي موجود در اين ديركتوري استفاده نمي كند مگر اينكه به ديركتوري sites-enabled مرتبط باشند. به طور معمول ، تمام پيكربندي بلوك سرور مجازي در اين دايركتوري انجام مي شود ، و سپس با پيوند دادن به دايركتوري ديگر فعال مي شود.
⦁ / etc / nginx / sites-enabled /: دايركتوري كه در آن بلوكهاي سرور مجازي فعال در هر سايت ذخيره ميشوند. به طور معمول ، با پيوند دادن به فايلهاي پيكربندي موجود در ديركتوري sites-available ايجاد مي شوند.
⦁ / etc / nginx / snippets: اين ديركتوري شامل قطعات پيكربندي است كه مي توان در جايي ديگر در پيكربندي Nginx گنجانيد. بخش هاي پيكربندي قابل تكرار بالقوه گزينه هاي خوبي براي تجزيه قطعات هستند.
ورودهاي مربوط به سرور
⦁ /var/log/nginx/access.log: هر درخواستي به سرور مجازي وب شما در اين فايل log ثبت مي شود ، مگر اينكه Nginx به گونه اي پيكربندي شده باشد كه كاري غير از اين انجام دهد.
⦁ /var/log/nginx/error.log: هرگونه خطاي Nginx در اين ورود ثبت مي شود.
نتيجه
اكنون كه سرور مجازي وب خود را نصب كرده ايد ، گزينه هاي بسياري براي نوع محتوا و فناوري هايي كه مي خواهيد از آنها استفاده كنيد در اختيار داريد تا يك تجربه غني تر ايجاد نماييد.
اگر مايليد يك پشته برنامه كامل تر بسازيد، مقاله نحوه نصب پشته LEMP در اوبونتو 20.4 را بررسي كنيد.