1. 什麼是Nginx?¶
Nginx是一款高性能的HTTP和反向代理服務器,常用於搭建網站、負載均衡或作爲後端服務的“門面”。對於新手來說,它的核心優勢是輕量、穩定,且反向代理功能能讓你輕鬆將客戶端請求轉發到後端服務(比如Node.js、Python等應用)。
2. 安裝Nginx¶
不同Linux發行版安裝命令略有不同,這裏以最常見的Ubuntu/Debian和CentOS/RHEL爲例。
2.1 Ubuntu/Debian系統
打開終端,執行以下命令:
# 更新軟件包列表
sudo apt update
# 安裝Nginx(-y自動確認安裝)
sudo apt install nginx -y
2.2 CentOS/RHEL系統
# 安裝Nginx
sudo yum install nginx -y
驗證安裝是否成功
安裝完成後,執行以下命令查看Nginx版本:
nginx -v # 顯示版本信息,如“nginx version: nginx/1.18.0”
3. 啓動與基礎管理¶
安裝後需要啓動Nginx,並設置開機自啓,避免服務器重啓後服務失效。
3.1 啓動Nginx
# Ubuntu/Debian/CentOS通用
sudo systemctl start nginx
3.2 設置開機自啓
sudo systemctl enable nginx
3.3 檢查Nginx狀態
sudo systemctl status nginx
若顯示“active (running)”,則Nginx已正常運行。
3.4 常用管理命令
- 停止Nginx:sudo systemctl stop nginx
- 重啓Nginx:sudo systemctl restart nginx
- 重載配置(無需停止服務):sudo systemctl reload nginx(修改配置後必須執行,否則不生效)
4. 基本配置文件說明¶
Nginx的配置由多個文件組成,核心是主配置文件和站點配置文件。新手只需關注站點配置即可。
4.1 主配置文件
位置:/etc/nginx/nginx.conf
作用:定義全局設置(如工作進程數、日誌路徑等),一般無需修改。
4.2 站點配置文件
位置:/etc/nginx/conf.d/(推薦)或 /etc/nginx/sites-available/
每個站點對應一個.conf文件(如default.conf或自定義名稱)。
示例:假設你有一個後端服務運行在本地3000端口(如Node.js應用),需要讓Nginx將80端口的請求轉發到3000端口。
5. 反向代理配置詳解¶
反向代理的核心是“客戶端請求→Nginx→後端服務”,Nginx相當於“中間人”。以下是具體配置步驟。
5.1 新建站點配置文件
以myapp.conf爲例,執行:
sudo nano /etc/nginx/conf.d/myapp.conf
(nano是文本編輯器,也可用vim,新手推薦nano,按Ctrl+X保存退出)
5.2 寫入反向代理配置
將以下內容粘貼到myapp.conf中,保存退出:
server {
# 監聽80端口(HTTP默認端口)
listen 80;
# 可填域名或服務器IP(如example.com或192.168.1.100)
server_name localhost;
# 匹配所有客戶端請求(/表示所有路徑)
location / {
# 後端服務地址(這裏轉發到本地3000端口,需確保後端服務已啓動)
proxy_pass http://127.0.0.1:3000;
# 傳遞客戶端信息給後端(避免後端獲取不到真實IP和域名)
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
5.3 關鍵參數解釋
- listen 80;:Nginx監聽的端口(HTTP默認80,HTTPS用443)。
- server_name:訪問的域名或IP(若沒有域名,填localhost或服務器公網IP)。
- proxy_pass:後端服務地址(格式爲http://ip:端口或https://ip:端口,必須以http:///https://開頭)。
- proxy_set_header:傳遞HTTP頭信息,Host $host讓後端知道客戶端請求的域名,X-Real-IP $remote_addr讓後端記錄真實IP。
6. 配置生效與測試¶
配置完成後,需先檢查語法是否有誤,再重載配置,最後測試效果。
6.1 檢查配置語法
sudo nginx -t
若顯示“test is successful”,則配置無誤;若提示錯誤,根據提示修改配置文件。
6.2 重載配置
sudo systemctl reload nginx
(無需重啓Nginx,直接生效新配置)
6.3 測試反向代理
假設後端服務運行在3000端口(如curl http://127.0.0.1:3000能返回內容),則:
- 用瀏覽器訪問http://服務器IP(或localhost),應看到後端服務返回的內容。
- 或用終端命令快速測試:
curl -I http://localhost # 查看響應頭是否正確
7. 注意事項¶
- 防火牆開放:確保服務器防火牆允許80/443端口通過。
- Ubuntu:
sudo ufw allow 80/tcp(需先啓用ufw:sudo ufw enable) - CentOS:
sudo firewall-cmd --add-port=80/tcp --permanent && sudo firewall-cmd --reload - 後端服務狀態:若後端服務未啓動,Nginx會顯示“502 Bad Gateway”(檢查後端是否正常運行,如
netstat -tulnp | grep 3000)。 - 路徑錯誤:
proxy_pass必須以http:///https://開頭,且後端地址不能遺漏端口(如http://127.0.0.1:3000而非http://127.0.0.1)。
8. 常見問題¶
- 訪問404:檢查後端服務是否啓動,或
proxy_pass地址是否正確(比如後端是/api路徑,需確保location規則匹配)。 - HTTPS反向代理:若後端服務是HTTPS(如
https://127.0.0.1:443),proxy_pass需改爲https://127.0.0.1:443,並可能需要添加proxy_ssl_server_name on;。
通過以上步驟,你已完成Nginx的安裝與反向代理配置。後續可嘗試配置HTTPS、負載均衡等進階功能,Nginx的靈活性會讓你逐漸掌握“服務器運維小技巧”!