Nginx 配置文件結構
Linux 中?Nginx 的配置文件:
通常位于 /etc/nginx/nginx.conf
或 /usr/local/nginx/conf/nginx.conf
。
Nginx 采用模塊化設計,主要分為以下部分:
1. 全局塊
配置與服務器整體相關的參數,如工作進程數、日志路徑等。
2. Events 塊
配置與網絡連接相關的參數。
events {worker_connections 1024; # 每個工作進程的最大連接數
}
3. Http 塊
配置 HTTP 服務器相關的參數,如虛擬主機、反向代理、負載均衡等。包括多個 server
塊。
<NGINX>http {include mime.types; # 包含 MIME 類型配置文件default_type application/octet-stream; # 默認文件類型access_log /var/log/nginx/access.log; # 訪問日志路徑# 定義一個虛擬主機server {listen 80; # 監聽端口server_name example.com; # 域名location / {root /var/www/html; # 靜態資源路徑index index.html; # 默認首頁文件}}
}
4. Server 塊
定義虛擬主機(每個 server
塊對應一個網站),如域名、端口、根目錄等。
server {# 使用 SSL 證書啟用 HTTPS:listen 443 ssl;ssl_certificate /etc/nginx/ssl/secure.crt; # SSL 證書ssl_certificate_key /etc/nginx/ssl/secure.key; # SSL 證書密鑰listen 80; // 監聽端口server_name example.com; # 域名location / {root /var/www/html; # 網站根目錄index index.html; # 默認首頁}
}
將靜態文件放到 /var/www/html
目錄,訪問 http://example.com
即可。
5. Location 塊
定義請求 URL 路徑的匹配規則和處理邏輯。
location /images/ {root /var/www; # 訪問 /images/ 時,文件路徑為 /var/www/images/
}
常用配置示例
1. 靜態資源服務
server {listen 80;server_name example.com;location /static/ {root /var/www;}
}
2. 反向代理
server {listen 8081;server_name localhost;location / {proxy_pass http://localhost:8080; # 將請求轉發到后端服務器 proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}
}
proxy_pass
指令將瀏覽器請求 localhost:8081 轉發到?http://localhost:8080
瀏覽器輸入的是 localhost:8081 ,后臺實際訪問 ?http://localhost:8080
3. 負載均衡
upstream backend {server 192.168.1.101;server 192.168.1.102;
}server {listen 80;server_name example.com;location / {proxy_pass http://backend; # 將請求轉發到后端服務器}
}
4. HTTPS 配置
server {listen 443 ssl;server_name example.com;ssl_certificate /etc/nginx/ssl/example.com.crt;ssl_certificate_key /etc/nginx/ssl/example.com.key;location / {root /var/www/html;index index.html;}
}
5. URL 重寫
location /user/ {rewrite ^/user/(.*)$ /profile?user=$1 break;
}
一、下載Nginx
?Nginx 作用:?
- 發布靜態網站
- 實現反向代理
- 實現負載均衡
- 緩存加速
- HTTPS 配置
負載均衡:當同時有多個用戶訪問我們服務器的時候,為了減少服務器的壓力,我們需要將用戶引入服務器集群中較輕壓力的服務器,分擔較重壓力服務器的負擔。
反向代理:反向代理就像一個 “中間人”,它站在 客戶端 和 后端服務器 之間,負責接收客戶端的請求,然后將請求轉發給后端服務器,并將服務器的響應返回給客戶端。
官網:https://nginx.org/
正向代理 | 反向代理 |
為客戶端服務(隱藏客戶端) | 為服務器服務(隱藏服務器) |
客戶端知道代理的存在 | 客戶端不知道代理的存在 |
常用于訪問外部資源(如 VPN) | 常用于負載均衡和緩存加速 |
- 反向代理:客戶端不知道后端服務器是誰,反向代理隱藏了服務器。
- 正向代理:服務器不知道客戶端是誰,正向代理隱藏了客戶端(比如通過 VPN 訪問國外社交網站)。
二、Nginx 注意事項
注意:開發中遇到的一個小坑, nginx 用命令重新加載有時候執行 nginx -s reload
會不生效,會啟動多個后臺進程,遇到此情況用任務管理器打開關掉重新啟動就好。
三、Nginx 常用命令
1、啟動
start nginx
2、重新加載
nginx -s reload
3、停止
nginx -s stop
4、指定配置文件啟動
nginx -c /path/to/nginx.conf
5、查看 Nginx 進程狀態
ps aux | grep nginx
6、測試修改配置文件后語法是否正確
nginx -t
如果 Nginx 是通過 systemd
管理的,可以使用以下命令替代:
啟動:systemctl start nginx
停止:systemctl stop nginx
重新加載:systemctl reload nginx
查看狀態:systemctl status nginx
技術水平有限,如有錯誤,歡迎指正!