مقدمه
وب سرور یکی از مهمترین اجزای هر سایت است که مسئول دریافت درخواستهای HTTP از مرورگرها و پاسخدهی به آنهاست. در سیستمعاملهای لینوکس، انواع مختلفی از وب سرورها وجود دارند که رایجترین آنها عبارتند از:
- Apache HTTP Server (معروف به Apache)
- Nginx
- LiteSpeed
در این مقاله کانفیگ سرور، ما به معرفی این وب سرورها، نحوه نصب، پیکربندی اولیه و تنظیمات پیشرفته خواهیم پرداخت. مقاله شامل توضیحات مفصل، دستورات و کدهای لازم برای راهاندازی و بهینهسازی این وب سرورهاست.
بخش اول: نصب و پیکربندی وب سرور Apache
1. نصب Apache بر روی لینوکس (Red Hat / CentOS و Ubuntu)
برای نصب Apache روی سیستمهای مبتنی بر Red Hat (مثل CentOS و Fedora):
sudo yum install httpdبرای نصب Apache روی سیستمهای مبتنی بر Debian/Ubuntu:
sudo apt update
sudo apt install apache22. شروع و متوقف کردن سرویس Apache
پس از نصب، شما میتوانید Apache را با دستورات زیر شروع کنید:
برای سیستمهای مبتنی بر Red Hat (CentOS/Fedora):
sudo systemctl start httpd
sudo systemctl enable httpdبرای سیستمهای مبتنی بر Debian/Ubuntu:
sudo systemctl start apache2
sudo systemctl enable apache23. تنظیمات اولیه Apache
پیکربندی Apache در فایل /etc/httpd/conf/httpd.conf (برای Red Hat/CentOS) یا /etc/apache2/apache2.conf (برای Ubuntu) قرار دارد. برای ویرایش این فایل از ویرایشگر متنی مانند nano یا vim استفاده کنید.
ویرایش فایل پیکربندی Apache (برای Red Hat):
sudo nano /etc/httpd/conf/httpd.confویرایش فایل پیکربندی Apache (برای Ubuntu):
sudo nano /etc/apache2/apache2.confدر این فایل، میتوانید تنظیمات مختلف مانند تغییر پورت، فعالسازی ماژولها و تنظیمات مربوط به دایرکتوریها را انجام دهید.
بخش دوم: نصب و پیکربندی Nginx
1. نصب Nginx
برای نصب Nginx روی سیستمهای مبتنی بر Red Hat (CentOS/Fedora):
sudo yum install nginxبرای نصب Nginx روی سیستمهای مبتنی بر Debian/Ubuntu:
sudo apt update
sudo apt install nginx2. شروع و متوقف کردن سرویس Nginx
پس از نصب، میتوانید Nginx را با دستورات زیر راهاندازی کنید:
برای سیستمهای مبتنی بر Red Hat:
sudo systemctl start nginx
sudo systemctl enable nginxبرای سیستمهای مبتنی بر Ubuntu:
sudo systemctl start nginx
sudo systemctl enable nginx3. تنظیمات اولیه Nginx
پیکربندی Nginx در فایل /etc/nginx/nginx.conf قرار دارد. برای ویرایش این فایل از ویرایشگر متنی استفاده کنید.
ویرایش فایل پیکربندی Nginx:
sudo nano /etc/nginx/nginx.confدر این فایل، تنظیمات مختلف مانند تعداد worker processها، پورتها و تنظیمات مربوط به سرورهای مجازی (virtual hosts) را میتوان انجام داد.
بخش سوم: تنظیمات پیشرفته و بهینهسازی وب سرور
1. تنظیمات امنیتی
a. جلوگیری از دسترسی به فایلهای حساس:
برای جلوگیری از دسترسی به فایلهای حساس (مانند فایلهای پیکربندی یا logها)، باید تنظیماتی در پیکربندی Apache یا Nginx انجام دهید.
در Apache:
برای جلوگیری از دسترسی به فایلهای خاص، در فایل پیکربندی Apache تنظیمات زیر را اضافه کنید:
<Files ".ht*">
Require all denied
</Files>در Nginx:
در پیکربندی Nginx، از تنظیمات زیر استفاده کنید تا از دسترسی به فایلهای پیکربندی جلوگیری کنید:
location ~ /\.ht {
deny all;
}
2. استفاده از SSL برای امنیت بیشتر
استفاده از SSL برای رمزگذاری ارتباطات بین وبسرور و کاربران ضروری است. برای نصب و پیکربندی SSL میتوانید از Let’s Encrypt یا یک گواهی SSL تجاری استفاده کنید.
برای نصب Let’s Encrypt و پیکربندی SSL:
نصب Certbot (ابزار Let’s Encrypt):
sudo apt install certbot python3-certbot-nginxsudo apt install certbot python3-certbot-apacheگرفتن گواهی SSL:
برای Nginx:
sudo certbot --nginxبرای Apache:
sudo certbot --apacheاین دستور بهطور خودکار SSL را برای دامنه شما تنظیم میکند.
3. تنظیمات بهینهسازی عملکرد
a. کشینگ محتوا (Caching):
یکی از بهترین روشها برای بهینهسازی عملکرد وبسایتها، استفاده از کشینگ است. کشینگ بهویژه برای محتوای ایستا مانند تصاویر، فایلهای CSS و JS مفید است.
در Apache:
برای فعالسازی کشینگ در Apache، باید ماژول mod_expires را فعال کنید و سپس تنظیمات زیر را در فایل پیکربندی اضافه کنید:
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 month"
</IfModule>
در Nginx:
برای فعالسازی کشینگ در Nginx، تنظیمات زیر را در فایل پیکربندی nginx.conf اضافه کنید:
location ~* \.(jpg|jpeg|png|gif|css|js|ico)$ {
expires 30d;
}بخش چهارم: مدیریت سرور و نظارت بر وب سرور
1. نظارت بر وضعیت وب سرور
برای نظارت بر وضعیت Apache یا Nginx، میتوانید از ابزارهای مختلفی مانند systemctl، journalctl و nginx -t برای بررسی وضعیت سرویسها استفاده کنید.
بررسی وضعیت Apache:
sudo systemctl status apache2 # برای Ubuntu
sudo systemctl status httpd # برای CentOSبررسی وضعیت Nginx:
sudo systemctl status nginx2. بررسی لاگها
لاگهای وب سرور اطلاعات ارزشمندی در مورد عملکرد و مشکلات سرور فراهم میکنند. برای بررسی لاگها از دستورات زیر استفاده کنید:
لاگهای Apache:
tail -f /var/log/apache2/access.log # برای Ubuntu
tail -f /var/log/httpd/access_log # برای CentOSلاگهای Nginx:
tail -f /var/log/nginx/access.logبخش پنجم: تنظیمات ویژه برای عملکرد و مقیاسپذیری
1. تنظیمات تعداد Worker در Nginx و Apache
در Apache:
برای بهبود عملکرد، تعداد workerها را در پیکربندی Apache تنظیم کنید. مقدارهای متداول برای تنظیمات StartServers، MinSpareServers و MaxSpareServers استفاده میشود.
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 3000در Nginx:
در پیکربندی Nginx میتوانید تعداد workerها را با تنظیمات worker_processes تنظیم کنید.
worker_processes 4;
worker_connections 1024;بخش ششم: Load Balancing و مقیاسپذیری
1. مفهوم Load Balancing در وب سرورها
Load balancing به فرآیند توزیع بار شبکهای یا پردازشی میان چندین سرور گفته میشود. این تکنیک باعث بهبود کارایی، افزایش قابلیت اطمینان، و کاهش زمان پاسخدهی وبسایتها میشود. بهویژه برای سایتهایی با ترافیک بالا، استفاده از Load Balancer ضروری است تا بارها بین سرورهای مختلف توزیع شود.
برای ایجاد Load Balancing میتوان از روشهایی مانند Round Robin، Least Connections یا IP Hash استفاده کرد.
2. تنظیم Load Balancing در Nginx
Nginx یکی از بهترین گزینهها برای Load Balancing است. برای راهاندازی Load Balancing در Nginx، کافی است تنظیمات مربوط به upstream را در فایل پیکربندی nginx.conf انجام دهید. در این مثال، درخواستها به دو سرور مختلف توزیع میشود:
http {
upstream backend {
server 192.168.1.101;
server 192.168.1.102;
}
server {
location / {
proxy_pass http://backend;
}
}
}
در این پیکربندی، درخواستها بهطور خودکار بین سرورهایی که در بخش upstream تعریف شدهاند، توزیع میشود.
3. استفاده از Round Robin و Least Connections
Round Robin یک روش معمول در Load Balancing است که بهصورت پیشفرض در Nginx فعال است. به این معنی که درخواستها به ترتیب به سرورها ارسال میشود.
برای استفاده از Least Connections (که درخواستها به سروری با کمترین تعداد اتصال فعلی ارسال میشود)، میتوانید از تنظیمات زیر استفاده کنید:
upstream backend {
least_conn;
server 192.168.1.101;
server 192.168.1.102;
}4. تنظیمات Load Balancer در Apache
برای تنظیم Load Balancing در Apache، میتوان از ماژول mod_proxy و mod_proxy_balancer استفاده کرد.
ابتدا باید ماژولهای موردنظر را فعال کنید:
sudo a2enmod proxy
sudo a2enmod proxy_balancer
sudo a2enmod proxy_httpسپس در فایل پیکربندی Apache (مثل /etc/apache2/sites-available/000-default.conf)، تنظیمات زیر را اضافه کنید:
<Proxy "balancer://mycluster">
BalancerMember http://192.168.1.101
BalancerMember http://192.168.1.102
</Proxy>
<VirtualHost *:80>
ProxyPass "/app" "balancer://mycluster/"
ProxyPassReverse "/app" "balancer://mycluster/"
</VirtualHost>در این تنظیمات، درخواستها بهصورت خودکار بین سرورهای مختلف توزیع خواهد شد.
بخش هفتم: تنظیمات کشینگ پیشرفته
1. کشینگ در Nginx
Nginx بهطور پیشفرض از کشینگ محتوای استاتیک مانند تصاویر، CSS و JS پشتیبانی میکند. برای بهینهسازی بیشتر کشینگ، میتوان تنظیمات ویژهای برای فایلهای خاص انجام داد.
برای مثال، کشینگ برای انواع خاصی از فایلها مانند تصاویر و فایلهای CSS بهصورت زیر پیکربندی میشود:
http {
server {
location ~* \.(jpg|jpeg|png|gif|css|js|ico)$ {
expires 30d;
add_header Cache-Control "public";
}
}
}این تنظیمات باعث میشود که Nginx فایلهای تصویری، CSS و JS را به مدت ۳۰ روز در کش نگه دارد.
2. کشینگ در Apache
در Apache، میتوان از ماژول mod_cache و mod_cache_disk برای کشینگ استفاده کرد. برای فعالسازی کشینگ، مراحل زیر را دنبال کنید.
ابتدا ماژولها را فعال کنید:
sudo a2enmod cache
sudo a2enmod cache_diskسپس در فایل پیکربندی Apache، تنظیمات کشینگ را اضافه کنید:
<IfModule mod_cache.c>
CacheRoot /var/cache/apache2/mod_cache
CacheEnable disk /images/
CacheEnable disk /styles/
CacheDefaultExpire 3600
</IfModule>در این تنظیمات، فایلهای موجود در مسیر /images/ و /styles/ کش خواهند شد و برای یک ساعت (۳۶۰۰ ثانیه) در کش باقی خواهند ماند.
بخش هشتم: بهینهسازی عملکرد و استفاده از HTTP/2
1. فعالسازی HTTP/2 در Nginx
HTTP/2 یک پروتکل جدید برای انتقال دادهها است که سرعت بارگذاری صفحات وب را بهطور قابل توجهی افزایش میدهد. برای فعالسازی HTTP/2 در Nginx، کافی است دستور زیر را در فایل پیکربندی nginx.conf اضافه کنید:
server {
listen 443 ssl http2;
server_name yourdomain.com;
ssl_certificate /etc/ssl/certs/yourdomain.crt;
ssl_certificate_key /etc/ssl/private/yourdomain.key;
}با این تنظیمات، Nginx درخواستهای HTTPS را با استفاده از پروتکل HTTP/2 سرویسدهی میکند.
2. فعالسازی HTTP/2 در Apache
برای فعالسازی HTTP/2 در Apache، ابتدا باید ماژول mod_http2 را فعال کنید:
sudo a2enmod http2سپس در فایل پیکربندی Apache (مثلاً /etc/apache2/apache2.conf)، تنظیمات زیر را اضافه کنید:
Protocols h2 http/1.1این تنظیمات باعث میشود که Apache از پروتکل HTTP/2 برای سرویسدهی به درخواستهای HTTPS استفاده کند.
بخش نهم: بهترین شیوهها برای بهینهسازی وب سرور
1. استفاده از GZIP برای فشردهسازی
فشردهسازی دادهها باعث کاهش حجم دادههای ارسالی از سرور به مرورگر میشود و میتواند بهطور قابل توجهی زمان بارگذاری صفحات را کاهش دهد.
در Nginx:
برای فعالسازی فشردهسازی GZIP، تنظیمات زیر را در فایل پیکربندی nginx.conf قرار دهید:
gzip on;
gzip_types text/plain text/css application/javascript application/json image/svg+xml;
gzip_min_length 1000;در Apache:
برای فعالسازی GZIP در Apache، ماژول mod_deflate را فعال کنید:
sudo a2enmod deflateسپس تنظیمات زیر را در فایل پیکربندی Apache اضافه کنید:
SetOutputFilter DEFLATE2. محدود کردن تعداد اتصالات همزمان
برای جلوگیری از بار زیاد روی سرور، میتوان تعداد اتصالات همزمان را محدود کرد. این کار باعث میشود که سرور بتواند بار ترافیک را بهطور بهینهتری مدیریت کند.
در Nginx:
برای محدود کردن تعداد اتصالات همزمان، میتوانید از دستور زیر استفاده کنید:
http {
limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
location / {
limit_conn addr 10;
}
}
}در Apache:
برای محدود کردن تعداد اتصالات همزمان، میتوانید از تنظیمات زیر استفاده کنید:
<IfModule mpm_worker_module>
MaxRequestWorkers 150
ServerLimit 150
</IfModule>نتیجهگیری
در این مقاله، بهطور جامع و کامل وب سرورهای لینوکسی مانند Apache و Nginx را معرفی کرده و نحوه نصب، پیکربندی و تنظیمات پیشرفته برای عملکرد بهینه، امنیت و مقیاسپذیری را توضیح دادیم. تنظیمات کشینگ، Load Balancing، بهینهسازی عملکرد و استفاده از SSL و HTTP/2 از جمله مواردی هستند که میتوانند بهطور قابل توجهی عملکرد وب سرور شما را بهبود بخشند.
با رعایت این بهترین شیوهها و تنظیمات، میتوانید یک وب سرور با عملکرد بالا و ایمن برای سایت خود ایجاد کنید.




