איך לשרת תת-דומיינים או דומיינים מרובים עם NGINX

יש לך שרת עם כתובת IP ציבורית יחידה, אך צריך לארח מספר דומיינים או תת-דומיינים? מה היית עושה? תרחיש זה יכול להיות מבלבל אם אתה מתחיל. אבל אל דאגה, המדריך הזה כאן בשבילך, כך שתוכל לשרת תת-דומיין של NGINX ומספר דומיינים.

במדריך זה, תלמד איך לשרת באופן יעיל תת-דומיינים של NGINX או מספר דומיינים על שרת אחד עם כתובת IP יחידה!

אם אתה מוכן, הגיע הזמן להתחיל!

דרישות מוקדמות

המדריך הזה מגיע עם הדגמות מעשיות אך לא דורש הרבה דרישות מוקדמות ויניח שיש לך שרת Ubuntu LTS עם SSH מופעל וNGINX מותקן. ההדגמות במדריך זה הן על שרת Ubuntu LTS 20.04.1.

הגדרת רשומות DNS

לפני שתוכל לשרת תת-דומיינים של NGINX או מספר דומיינים, תצטרך להוסיף רשומת A בפאנל הבקרה של DNS. רשומת ה-A מקשרת ומצביעה את כל הדומיינים ותת-הדומיינים לכתובת IP יחידה כדי לאפשר לדפדפני אינטרנט למצוא את האתר שלך.

1. הפעל את דפדפן האינטרנט המועדף עליך והתחבר ללוח הבקרה של DNS שלך.

2. לחץ על הוסף רשומה כדי להתחיל להוסיף רשומות A. הדפדפן שלך יוביל אותך לדף בו תקבע את הגדרות ה-DNS עבור הדומיין שלך ותתי הדומיין.

Adding an A Record

עכשיו קבע את הגדרות ה-DNS עם המפורטות הבאות:

בחר ברשומת A בשדה ה-סוג.

הזן @ בשדה ה-מארח, ואת כתובת ה-IP של השרת שלך בשדה ה-ערך.

בחר את הערך הרצוי שלך בשדה ה-TTL, ולאחר מכן לחץ על הלחצן אישור כדי לשמור את ההגדרות.

חזור על התהליך אותו הדבר לתתי הדומיין האחרים.

Configuring DNS settings for Domain and Subdomains The final DNS Settings page looks like the one below.

הדף הסופי של ההגדרות של ה-DNS נראה כמו בתמונה למטה.

Viewing DNS Settings Page

לוח הבקרה של רשומת ה-DNS שלך עשוי להשתנות בפונקציונליות ובעיצוב, אך אותם עקרונות יחולו לכולם.

הגדרת ספריות אינטרנט לדומיין NGINX ולתתי הדומיין

עכשיו שהוספת רשומות A עבור הדומיין שלך ולתי הדומיין שלך, זמן להגדיר את ספריות האינטרנט שלהם. NGINX מגיע עם קובץ מארח וירטואלי ברירת מחדל ומוגדר לשרת ספריית אינטרנט שממוקמת ב-/usr/share/nginx/html.

תיצור ספריית אינטרנט נפרדת עבור כל דומיין בתוך שורש המסמך המוגדר ברירת מחדל של NGINX (/var/www/html).

1. ראשית, פתח את הטרמינל שלך והרץ את הפקודות הבאות כדי ליצור תיקיות אינטרנט לכל הדומיינים והסאבדומיינים. בכך תפריד, תארגן ותבדיל את הקבצים לכל אתר אינטרנט.

sudo mkdir /var/www/html/awstutorial.net
sudo mkdir /var/www/html/web1.awstutorial.net
sudo mkdir /var/www/html/web2.awstutorial.net

2. לאחר מכן, הרץ את פקודת chown כדי לשנות את הבעלות של כל התיקיות שיצרת בשלב הראשון למשתמש ולקבוצה של www-data. אתה משנה את הבעלות של כל התיקיות למשתמש ולקבוצה של www-data מאחר ו-NGINX פועל כמשתמש www-data.

sudo chown -R www-data:www-data /var/www/html/awstutorial.net
sudo chown -R www-data:www-data /var/www/html/web1.awstutorial.net
sudo chown -R www-data:www-data /var/www/html/web2.awstutorial.net

3. צור קובץ בשם index.html בעורך הקוד המועדף עליך ואז העתק/הדבק את הקוד לקובץ index.html. שמור את הקובץ בתוך תיקיית האינטרנט הראשית של הדומיינים שלך (/var/www/html/awstutorial.net).

הקוד HTML למטה מציג הודעה שאומרת "ברכות! האתר awstutorial.net פועל!" כאשר הקובץ index.html נפתח בדפדפן אינטרנט.

<html>
	<head>
	  <title>Welcome to awstutorial.net!</title>
  </head>
	  <body>
	    <h1>Congratulations! The awstutorial.net website is working!</h1>
    </body>
</html>

4. לבסוף, צור את הקובץ index.html באותו שם בתיקיות /var/www/html/web1.awstutorial.net ו-/var/www/html/web2.awstutorial.net. אך החלף את awstutorial.net ב־web1.awstutorial.net וב־web2.awstutorial.net בקוד של כל index.html בהתאמה.

הגדרת מארח וירטואלי עבור דומיין וסאבדומיינים של NGINX

כבר יש לך עמוד index.html עבור הדומיין והסאבדומיינים שלך להגיש דרך שרת אינטרנט של NGINX. השלב הבא הוא ליצור קובץ הגדרת מארח וירטואלי של NGINX עבור כל דומיין כדי להגיש את דפי ה־HTML.

1. צור קובץ תצורת וירטואלי של NGINX בשם awstutorial.net בעורך הקוד שלך המועדף, והעתק/הדבק את הקוד למטה לקובץ זה. שמור את הקובץ בתיקייה /etc/nginx/sites-available/.

הקוד למטה שולט בהתנהגות השרת שלך, כמו שם השרת ועמוד הבית (אינדקס) כאשר משתמש מנסה לגשת לדומיין שלך.

server {
        # מחיב את פתח ה- TCP פורט 80.
        listen 80; 

				# ספריית השורש המשמשת לחיפוש אחר קובץ
        root /var/www/html/awstutorial.net;
				# מגדיר את הקובץ לשימוש כדף הבית
        index index.html index.htm;
				# מגדיר את הדומיין או שם התת-דומיין. 
        # אם לא נוגד בלוק השרת שמוגדר שם
				# Nginx משתמש בשם 'ריק'
        server_name awstutorial.net;

        location / {
            # החזרת שגיאת 404 למקרים בהם השרת מקבל 
						# בקשות לקבצים וספריות שאינם ניתנים לעקיפה.
            try_files $uri $uri/ =404;
        }
    }

2. לאחר מכן, הפעל את הפקודה nginx הבאה כדי לבדוק (-t) את קובץ התצורה של NGINX לקיום שגיאות תחבורה.

sudo nginx -t

אם לא נמצאת שגיאת תחבורה בקובץ התצורה של NGINX, תקבל את הפלט הבא.

Verifying NGINX configuration file

3. בשלב הבא, הפעל את הפקודה ליצירת קישור סמלי (ln -s) מהתיקייה /etc/nginx/sites-available לתיקייה /etc/nginx/sites-enabled/. פקודה זו מאפשרת את קובץ התצורה למארח וירטואלי awstutorial.net.

sudo ln -s /etc/nginx/sites-available/awstutorial.net /etc/nginx/sites-enabled/

תבנית ה-sites-available וה-sites-enabled היא סטנדרטית בהתקנת NGINX על Ubuntu, אך התפצלויות אחרות עשויות להשתמש בתקנים שונים.

4. הרץ שוב את השלבים אחד עד שלוש כדי ליצור קבצי תצורה למארח וירטואלי של NGINX בשמות web1.awstutorial.net ו־web2.awstutorial.net.

שנה את השורות הבאות בכל קובץ תצורת מארח וירטואלי של NGINX:

  • החלף את השורה root /var/www/html/awstutorial.net בתיקיית ה־webroot של כל תת־דומיין (root /var/www/html/web1.awstutorial.net ו־root /var/www/html/web2.awstutorial.net).
  • החלף את השורה server_name awstutorial.net בשם של כל תת־דומיין (server_name web1.awstutorial.net ו־server_name web2.awstutorial.net).

5. כעת הרץ את הפקודות sudo ln הבאות כמו שעשית בשלב שלוש כדי לאפשר את קבצי תצורת המארח הווירטואלי.

# הפעל קובץ התצורה הווירטואלי של שרת NGINX עבור web1.awstutorial.net
sudo ln -s /etc/nginx/sites-available/web1.awstutorial.net /etc/nginx/sites-enabled/
# הפעל קובץ התצורה הווירטואלי של שרת NGINX עבור web2.awstutorial.net
sudo ln -s /etc/nginx/sites-available/web2.awstutorial.net /etc/nginx/sites-enabled/

6. הפעל את הפקודה systemctl הבאה כדי לאתחל מחדש את שירות ה-NGINX (restart nginx) כדי להחיל את כל שינויי התצורה.

sudo systemctl restart nginx

7. לבסוף, נווט לכתובות ה-URL של הדומיין והתתי דומיינים בדפדפן שלך כדי לבדוק אם האתרים פועלים כהלכה.

אם הדומיין והתתי דומיינים נטענים, תראה הודעה כמו זו למטה.

Verifying websites are loading through the web browser.

הגדרת HTTPS על דומיין ותתי דומיינים של NGINX

הגדרת דומיין ותתי דומיינים של NGINX בפרוטוקול HTTP הושלמה בהצלחה. אך עליך לאבטח את החיבור של הדומיין והתתי דומיינים באמצעות HTTPS. כיצד? עם תעודה שתקבל מרשות תעודות כמו Let’s Encrypt SSL.

1. ראשית, הפעל את הפקודה להתקנת חבילת התוכנה Certbot (apt-get install certbot). Certbot מאפשר לך להוריד תעודת SSL עבור הדומיין שלך ועבור תתי דומיינים.

sudo apt-get install certbot python3-certbot-nginx -y

2. לְאַחַר מֵאַיְזוֹ רְץ אֶת הַפְּקוּדָה certbot לְמַטָה כְּדֵי לִהוֹרִיד תִעוּד SSL (certonly) לְדוֹמֵי־הַתְּחִלָה שֶׁלֶךָ (-d awstutorial.net). שִׁים לֵב שֶׁאַתָּה מַסִּיחַ בְּתוֹקֵף הַתְּקִנָה (—agree-tos) עִם כְּתוֹת הַדוֹאָר שֶׁלְּךָ (—email).

sudo certbot certonly --agree-tos --email [email protected] -d awstutorial.net

הֲקֵף אֶת הַדוֹאָר בַּעֲצַמְךָ.

3. הַזְּנָק ‘1’ כְּדֵי לִבְחוֹר אֶת הַתְּסִיר הַשֵּׁפֶרֶת NGINX (nginx) כְּדֵי לְאַמֵּת עִם הַתְּסִיר ACME CA, כְּמוֹ שֶׁמוּצָג מַטָה.

Selecting Plugin to Authenticate with ACME CA

לְאַחַר בְּחִירַת הַתְּסִיר הַשֵּׁפֶרֶת NGINX, תֵּרֶאֶה אֶת כְּלֵי הַתִּקּוּן הַהוֹרָדָה שֶׁל תִעוּד SSL לְדוֹמֵי־הַתְּחִלָה שֶׁלְּךָ (awstutorial.net).

בְּבִרְירַת מֶחָלָק, תִּעוּדוֹת SSL שֶׁל Let’s Encrypt מְאוּחֲסִים בַּתֵּיקָה /etc/letsencrypt/live/.

Showing Download Progress of the SSL Certificate

4. עַכְשָׁו רְץ אֶת כָּל הַפְּקוּדוֹת לְמַטָה כַּמוֹ שֶׁעָשִׂיתָ בְּשַׁלְבֵי הַתְּחִלָה לְהוֹרִיד תִעוּדֵי SSL לְתַת־הַתְּחִילָה הַנוֹתָרוֹת (web1.awstutorial.net וְweb2.awstutorial.net).

sudo certbot certonly --agree-tos --email [email protected] -d web1.awstutorial.net
sudo certbot certonly --agree-tos --email [email protected] -d web2.awstutorial.net

5. לְבַסֹּוף, רְץ אֶת הַפְּקוּדָה ls לִרְשֹׁום אֶת כָּל תִעוּדֵי SSL בַּתֵּיקָה /etc/letsencrypt/live/ שֶׁכֵּללוּ (*) אֶת awstutorial.net בְּשֵׁמָם. עֲשִׂי זֹאת כְּדֵי לְוַדֵּא שֶׁהַתִּעוּדוֹת SSL קַיָּמוֹת.

ls /etc/letsencrypt/live/*awstutorial.net/

לְמַטָה, תֵּרֶאֶה אֶת תִעוּדֵי SSL לְדוֹמֵי־הַתְּחִילָה וּלְתַת־הַתְּחִילָה שֶׁלְּךָ.

Showing SSL certificate for all domains.

הַגְדָּרַת הַמַּאֲרִיךְ הַוִרְטוּאָלִי שֶׁל NGINX לְשִׁימוּש תִעוּדֵי SSL

בנקודה זו, יש לך כבר תעודות SSL לרשותך. אך איך אתה משתמש בהן כדי לאבטח את הדומיין והדומיינים המשניים שלך? יש לך להגדיר את נתיבי התעודות בתוך הבלוק server שבקובץ התצורה של כל מארח וירטואלי של NGINX.

1. פתח את קובץ התצורה של המארח הווירטואלי של NGINX של awstutorial.net הנמצא בתיקייה /etc/nginx/sites-available/ בעורך הקוד המועדף עליך.

2. החליף את תוכן הקובץ עם הקוד למטה, בו אתה מגדיר את נתיב תעודת SSL של הדומיין שלך והפרוטוקול של SSL (תחת נתיב התעודה SSL).

server {
	     # קושר את יציאת ה-TCP 80.
       listen 80;
	     # מגדיר את שם הדומיין או התת-דומיין.
       # אם לא הוגדר server_name בתוך בלוק השרת 
	     # Nginx משתמש בשם 'ריק'
       server_name awstutorial.net;
	     # מפנה את התעבורה ל-
	     # בלוק השרת המתאים ל-HTTPS עם קוד מצב 301
       return 301 https://$host$request_uri;
       }

server {
        # קושר את יציאת ה-TCP 443 ומאפשר SSL.
        listen 443 SSL;
	      # ספריית השורש המשמשת לחיפוש אחר קובץ.
	      root /var/www/html/awstutorial.net; 
	      # מגדיר את שם הדומיין או התת-דומיין.
        # אם לא הוגדר server_name בתוך בלוק השרת 
	      # Nginx משתמש בשם 'ריק'
        server_name awstutorial.net;

	      # נתיב תעודת ה-SSL
        ssl_certificate /etc/letsencrypt/live/awstutorial.net/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/awstutorial.net/privkey.pem;
	      # משתמש בקובץ שנוצר על ידי פקודת certbot.
        include /etc/letsencrypt/options-ssl-nginx.conf;
	      # מגדיר את נתיב קובץ ה-dhparam.pem
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

        location / {
	      # מחזיר שגיאת 404 עבור מקרים בהם השרת מקבל 
	      # בקשות לקבצים ולתיקיות שאינם נמצאים.
        try_files $uri $uri/ =404;
        }

    }

3. חזור על אותו התהליך (שלבים אחד עד שני) עבור קבצי התצורה של מארח הוירטואלי הנותרים (web1.awstutorial.net ו web2.awstutorial.net). אך ודא שאתה מחליף את נתיב אישור ה-SSL בנתיב אישור ה-SSL של התת-דומיין שלך (תחת נתיב אישור ה-SSL).

4. עכשיו הריץ שוב את פקודת ה-systemctl למטה כדי לאתחל את שירות ה-NGINX ולהחיל את שינויי התצורה.

sudo systemctl restart nginx

5. לבסוף, נווט אל כתובות ה-URL של הדומיין והתת-דומיין שלך בדפדפן האינטרנט שלך. אך הפעם, במקום פרוטוקול ה-HTTP, השתמש ב-HTTPS כדי לראות האם הם עובדים.

למטה, ניתן לראות סמל פנסיה בשורת הכתובת, המציין שהאתר מאובטח עם אישור ה-SSL שלך.

Verifying Domain is Secure

סיכום

במדריך זה, למדת כיצד לספק תת-דומיין של NGINX או מספר דומיינים רבים על ידי הגדרת קובץ תצורת מארח וירטואלי. גם נגעת באפשרות לאבטח את הדומיינים שלך עם אישור SSL שאתה גם מגדיר בקובץ תצורת מארח וירטואלי.

עכשיו, למה לא להשתמש בהגדרה זו בסביבת ייצור, כגון לארח יישומים מרובים על שרת יחיד ולספק אירוח אינטרנט זול?

Source:
https://adamtheautomator.com/nginx-subdomain/