تنظیم سروربلاک برای Nginx

سرور بلاک ها به شما این اجازه را می دهند تا بیش از یک وبسایت را روی یک ماشین اجرا کنید. با سروربلاک ها شما می توانید برای هر سایت یک document root تعریف کنید و برای هر سایت یک security policy جداگانه بسازید یا SSL certificate جداگانه برای هر سایت استفاده کنید و کلی کار دیگه …

در این آموزش پیرو آموزش نصب و اجرای Nginxروی لینوکس اوبونتو، آموزش مرحله به مرحله ای را برای تنظیم سرور بلاک های Nginx پیش رو داریم.

پیش نیازها

  • اول از همه مطمین شوید یه دامنه دارید که به public ip سرور شما اشاره می کند، برای مثال exapmle.com .
  • دوم مطمین شوید Nginx را نصب کرده اید (آموزش نصب Nginx)
  • شما با user سطح دسترسی Sudoهستید.

ایجاد ساختار دایرکتوری

ریشه دایرکتوری یا Directory root جایی هست که فایل های وب سایت برای هر دامنه در آنجا نگهداری می شود. شما می توانید Documjent root را هر جایی که دوست دارید در نظر بگیرید.

استفاده از ساختار زیر رایج ترین ساختار برای directory root می باشد:

/var/www/
├── domain1.com
│   └── public_html
├── domain2.com
│   └── public_html
├── domain3.com
│   └── public_html

اساسا برای هر دامنه که میخواهیم روی سرور هاست کنیم، یک directory root جداگانه درون دایرکتوری /var/www می سازیم.داخل هر کدام از این دایرکتوری ها یک دایرکتوری public_html می سازیم که فایل های وب سایت را نگهداری می کند.

خب بیاید از ساخت دایرکتوری برای دامنه example.comشروع کنیم:

sudo mkdir -p /var/www/example.com/public_html

برای تست کردن یک فایل index.html داخل دایرکتوری document root دامین مورد نظر می سازیم :

sudo nano /var/www/example.com/public_html/index.html

محتوای فایل ایجاد شده را برابر زیر قرار می دهیم:

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Salam, Welcome to example.com website</title>
  </head>
  <body>
    <h1>Success! example.com home page! ... </h1>
  </body>
</html>

برای جلوگیری از مشکلات سطح دسترسی، صاحب دایرکتوری document root دامنه را به کاربر Nginxتغییر می دهیم (www-data) :

sudo chown -R www-data: /var/www/example.com

ساخت بلاک سرور

بصورت پیش فرض در سیستم های اوبونتو، فایل های کانفیگ سرور بلاک های Nginx در دایرکتوری /etc/nginx/sites-available ذخیره می شوند که توسط symbolic links زده به دایرکتوری /etc/nginx/sites-enabled/ فعال (enable) می شوند.

خب پس با دستور زیر کانفیگ فایل مرتبط با بلاک سرور example.com را بدست آورید.

sudo nano /etc/nginx/sites-available/example.com
server {
    listen 80;
    listen [::]:80;

    root /var/www/example.com/public_html;

    index index.html;

    server_name example.com www.example.com;

    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;

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

نام فایل کانفیگ رو هر چه دوست داشته باشید می توانید انتخاب کنید، منتهی معمولا بهتر است که هم نام دامنه باشد.

برای فعال کردن بلاک سرور جدید، یک سیمبول لینک از فایل کانفیگ به دایرکتوری  sites-enabled ایجاد می کنیم که توسط Nginx بهنگام startup خوانده می شود:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

حال نوبت به تست کانفیگ Nginxرسیده است:

sudo nginx -t

اگر هیچ خطایی نباشد، خروجی به شکل زیر خواهد بود:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

سرویس Nginx را ری استارت کنید تا تغییرات اعمال شود:

sudo systemctl restart nginx

در انتها برای اینکه بررسی کنید بلاک سرور کار می کنه یا خیر، http://example.com را در سرور خود اجرا کنید.

منبع ۱

منبع ۲