爲什麼需要綁定端口和域名?¶
在一臺服務器上,我們可能運行多個網站或服務(比如個人博客、公司官網、後臺管理系統等)。域名是用戶訪問時輸入的“網址”(如 www.example.com),端口是服務器上不同服務的“門牌號”(如80端口是HTTP默認端口,8080是常用自定義端口)。Nginx通過“端口+域名”的組合,能讓不同的域名或端口對應到不同的網站/服務,實現“一個服務器,多個網站”的效果。
準備工作¶
- 服務器環境:確保你的服務器已安裝Nginx(以Linux爲例,如Ubuntu/CentOS),並能正常啓動。
- Ubuntu安裝:sudo apt update && sudo apt install nginx
- CentOS安裝:sudo yum install nginx - 域名與IP:你需要有一個已備案的域名(如
www.myblog.com),並將域名解析到服務器的公網IP(通過域名服務商的控制檯設置A記錄,將域名指向服務器IP)。 - 測試訪問:確保服務器能正常訪問,例如用瀏覽器直接訪問服務器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)端口訪問。
- 創建/修改配置文件
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端口)。
- 創建配置文件
同樣在/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;
}
驗證與啓動¶
- 檢查配置語法:確保配置文件無錯誤,執行
sudo nginx -t。如果提示syntax is ok和test is successful,則配置正確。 - 重啓Nginx:使配置生效,執行
sudo systemctl restart nginx(Ubuntu/CentOS通用)。
測試訪問¶
- 域名解析驗證:通過瀏覽器訪問
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的 listen 和 server_name 指令,我們可以輕鬆實現域名與端口的綁定,讓一臺服務器支持多個網站。核心是理解虛擬主機配置,確保域名解析到服務器IP,並通過 nginx -t 驗證配置。多練習幾次,你就能熟練管理服務器上的多個網站或服務了!
(注:本文基於Linux環境,Windows環境配置類似,但文件路徑和命令可能不同,需自行調整。)