爲什麼需要綁定端口和域名?

在一臺服務器上,我們可能運行多個網站或服務(比如個人博客、公司官網、後臺管理系統等)。域名是用戶訪問時輸入的“網址”(如 www.example.com),端口是服務器上不同服務的“門牌號”(如80端口是HTTP默認端口,8080是常用自定義端口)。Nginx通過“端口+域名”的組合,能讓不同的域名或端口對應到不同的網站/服務,實現“一個服務器,多個網站”的效果。

準備工作

  1. 服務器環境:確保你的服務器已安裝Nginx(以Linux爲例,如Ubuntu/CentOS),並能正常啓動。
    - Ubuntu安裝:sudo apt update && sudo apt install nginx
    - CentOS安裝:sudo yum install nginx
  2. 域名與IP:你需要有一個已備案的域名(如 www.myblog.com),並將域名解析到服務器的公網IP(通過域名服務商的控制檯設置A記錄,將域名指向服務器IP)。
  3. 測試訪問:確保服務器能正常訪問,例如用瀏覽器直接訪問服務器IP(如 http://192.168.1.100),能看到Nginx默認歡迎頁。

理解Nginx配置文件

Nginx的核心配置文件位於 /etc/nginx/ 目錄下,主要通過 server 定義虛擬主機(即不同域名/端口對應的網站配置)。關鍵指令包括:
- listen:指定Nginx監聽的端口(默認80)。
- server_name:指定域名(可匹配多個域名,用空格分隔)。
- root:網站文件存放路徑(如 /var/www/html/myblog)。
- index:默認首頁文件名(如 index.html)。

實戰步驟:綁定域名與端口

以下以“兩個場景”爲例,教你如何配置不同的域名/端口綁定:

場景1:同一個域名綁定不同端口

假設你有域名 www.myblog.com,需要讓它同時支持 80(HTTP)和 443(HTTPS)端口訪問。

  1. 創建/修改配置文件
    Nginx的虛擬主機配置通常放在 /etc/nginx/conf.d/ 目錄下(Ubuntu/CentOS通用)。
    - 新建配置文件:sudo nano /etc/nginx/conf.d/myblog.conf
    - 寫入以下內容:
     server {
         listen 80;       # 監聽80端口(HTTP默認端口)
         server_name www.myblog.com;  # 綁定域名www.myblog.com
         root /var/www/html/myblog;   # 網站文件目錄(需提前創建)
         index index.html;             # 默認首頁
     }

     server {
         listen 443 ssl;  # 監聽443端口(HTTPS,ssl表示支持HTTPS,需提前配置證書)
         server_name www.myblog.com;  # 綁定同一個域名
         root /var/www/html/myblog;   # 網站文件目錄
         index index.html;
         # SSL配置(HTTPS證書需提前放在/etc/nginx/ssl/目錄下)
         ssl_certificate /etc/nginx/ssl/myblog.crt;
         ssl_certificate_key /etc/nginx/ssl/myblog.key;
     }
  • 保存文件(Ctrl+O 回車,Ctrl+X 退出)。
場景2:不同域名綁定不同端口

假設你有兩個域名:www.myblog.com(訪問80端口)和 blog.myblog.com(訪問8080端口)。

  1. 創建配置文件
    同樣在 /etc/nginx/conf.d/ 目錄下新建 blog.conf
   server {
       listen 80;           # 監聽80端口
       server_name www.myblog.com;  # 綁定第一個域名
       root /var/www/html/myblog;   # 網站文件目錄
       index index.html;
   }

   server {
       listen 8080;         # 監聽8080端口(自定義端口)
       server_name blog.myblog.com;  # 綁定第二個域名
       root /var/www/html/blog;      # 博客文件目錄
       index index.html;
   }

驗證與啓動

  1. 檢查配置語法:確保配置文件無錯誤,執行 sudo nginx -t。如果提示 syntax is oktest is successful,則配置正確。
  2. 重啓Nginx:使配置生效,執行 sudo systemctl restart nginx(Ubuntu/CentOS通用)。

測試訪問

  1. 域名解析驗證:通過瀏覽器訪問 www.myblog.com(場景1/2),或 blog.myblog.com:8080(場景2)。
    - 如果看到網站內容,說明綁定成功;
    - 如果訪問失敗,檢查:
    • 域名解析是否生效(用 ping www.myblog.com 測試,需返回服務器IP);
    • 端口是否被防火牆攔截(如阿里雲/騰訊雲服務器需在安全組開放對應端口)。

常見問題與解決方法

  • 配置錯誤導致Nginx啓動失敗:執行 sudo nginx -t 檢查語法,重點看報錯信息(如 unexpected end of file 表示配置文件不完整)。
  • 域名解析未生效:等待DNS生效(通常需10分鐘~24小時),或用 nslookup www.myblog.com 臨時測試解析結果。
  • 端口衝突:若80端口被其他服務佔用(如Apache),需修改 listen 端口或停止佔用服務。

總結

通過Nginx的 listenserver_name 指令,我們可以輕鬆實現域名與端口的綁定,讓一臺服務器支持多個網站。核心是理解虛擬主機配置,確保域名解析到服務器IP,並通過 nginx -t 驗證配置。多練習幾次,你就能熟練管理服務器上的多個網站或服務了!

(注:本文基於Linux環境,Windows環境配置類似,但文件路徑和命令可能不同,需自行調整。)

小夜