一、Nginx常用命令
1.1 啟動 Nginx
要啟動 Nginx 服務,可以使用以下命令:
sudo systemctl start nginx
1.2 停止 Nginx
如果需要停止 Nginx 服務,可以使用以下命令:
sudo systemctl stop nginx
1.3 重啟 Nginx
在修改了 Nginx 配置文件后,需要重啟 Nginx 以使更改生效。可以使用以下命令:
sudo systemctl restart nginx
1.4 重新加載配置
當修改了配置文件,但不希望停止服務時,可以使用以下命令重新加載配置:
sudo systemctl reload nginx
1.5 查看 Nginx 狀態
要查看 Nginx 的當前運行狀態,可以使用以下命令:
sudo systemctl status nginx
這將顯示 Nginx 是否正在運行,以及其相關信息。
1.6 測試配置文件
在修改 Nginx 配置文件后,可以使用以下命令測試配置的正確性:
sudo nginx -t
如果配置文件正確,會返回 “syntax is ok” 和 “test is successful” 的信息。如果有錯誤,則會給出具體的錯誤信息和所在的配置文件行數。
1.7 查看 Nginx 日志
Nginx 的錯誤日志和訪問日志通常位于 /var/log/nginx
目錄中。以下命令可以實時查看錯誤日志:
tail -f /var/log/nginx/error.log
訪問日志可以使用類似的命令查看:
tail -f /var/log/nginx/access.log
1.8 查看 Nginx 進程
要查看當前運行的 Nginx 進程,可以使用以下命令:
ps aux | grep nginx
這將列出所有 Nginx 相關的進程信息,包括主進程和工作進程。
1.9 配置 Nginx 開機自啟動
要設置 Nginx 在系統啟動時自動啟動,可以使用以下命令:
sudo systemctl enable nginx
1.10 禁用 Nginx 開機自啟動
如果需要禁用 Nginx 在系統啟動時自動啟動,可以使用以下命令:
sudo systemctl disable nginx
二、在 CentOS 上部署 Nginx
2.1 安裝 Nginx
在 CentOS 上安裝 Nginx 可以通過 EPEL(Extra Packages for Enterprise Linux)倉庫或源代碼編譯來完成。下面介紹使用 yum 安裝的方法:
# 安裝 EPEL 倉庫
sudo yum install epel-release# 安裝 Nginx
sudo yum install nginx# 啟動 Nginx
sudo systemctl start nginx# 設置開機自啟動
sudo systemctl enable nginx
2.2 驗證安裝
安裝完成后,可以通過以下命令檢查 Nginx 的狀態:
sudo systemctl status nginx
然后在瀏覽器中輸入 http://your_server_ip
,如果看到 Nginx 的歡迎頁面,說明安裝成功。
2.3 Nginx 配置文件
Nginx 的主配置文件通常位于 /etc/nginx/nginx.conf
。下面是一個基本的配置示例:
worker_processes auto;events {worker_connections 1024;
}http {include /etc/nginx/mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;server {listen 80;server_name localhost;location / {root /usr/share/nginx/html; # 靜態文件路徑index index.html index.htm; # 默認首頁}error_page 404 /404.html; # 自定義404頁面location = /404.html {internal;}}
}
三、在 Docker 中部署 Nginx
3.1 Docker 安裝
首先,需要在 CentOS 上安裝 Docker:
# 更新 yum
sudo yum update# 安裝必要的依賴
sudo yum install -y yum-utils device-mapper-persistent-data lvm2# 添加 Docker 官方的 yum 源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo# 安裝 Docker
sudo yum install docker-ce# 啟動 Docker
sudo systemctl start docker# 設置開機自啟動
sudo systemctl enable docker
3.2 拉取 Nginx 鏡像
sudo docker pull nginx
3.3 運行 Nginx 容器
以下是啟動 Nginx 容器的命令:
sudo docker run --name my-nginx -p 80:80 -d nginx
此命令將 Nginx 運行在后臺并映射到宿主機的 80 端口。
四、Docker 掛載 HTML 文件實現實時刷新數據
在實際開發中,我們可能需要實時更新 Nginx 提供的靜態資源。可以通過 Docker 的掛載功能來實現這一點。
4.1 準備 HTML 文件
創建一個 HTML 文件夾,并在其中添加一個簡單的 HTML 文件。
mkdir ~/nginx-html
echo "<h1>Hello, Nginx!</h1>" > ~/nginx-html/index.html
4.2 啟動 Nginx 容器并掛載目錄
使用以下命令啟動 Nginx 容器,同時將宿主機的 HTML 文件夾掛載到容器內:
sudo docker run --name my-nginx -p 80:80 -v ~/nginx-html:/usr/share/nginx/html -d nginx
在這個命令中,-v ~/nginx-html:/usr/share/nginx/html
將宿主機的 ~/nginx-html
目錄掛載到 Nginx 容器的 /usr/share/nginx/html
目錄中。
4.3 實時刷新數據
修改 ~/nginx-html/index.html
文件的內容,Nginx 會自動加載新的內容。比如可以添加如下內容:
<h1>Hello, Nginx! Updated!</h1>
保存文件后,刷新瀏覽器,即可看到更新的內容。
五、使用 Nginx 的數據分析系統案例
在數據分析系統中,Nginx 可以用作靜態文件服務器和反向代理,以提高系統的性能和安全性。以下是一個簡單的使用案例:
5.1 場景描述
假設我們有一個數據分析系統,前端使用 React 構建,后端使用 Node.js 提供 API。我們希望通過 Nginx 將靜態文件和 API 請求分發到不同的服務。
5.2 Nginx 配置示例
server {listen 80;server_name analytics.example.com;# 靜態文件服務location / {root /usr/share/nginx/html; # 前端構建的靜態文件路徑index index.html;try_files $uri $uri/ /index.html;}# 反向代理到 Node.js 后端location /api {proxy_pass http://localhost:3000; # Node.js 服務地址proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection 'upgrade';proxy_set_header Host $host;proxy_cache_bypass $http_upgrade;}
}
六、性能優化
在高并發場景中,優化 Nginx 的性能是非常重要的。以下是一些常見的優化方法:
6.1 調整工作進程和連接數
根據服務器的 CPU 核心數調整 worker_processes
和 worker_connections
參數:
worker_processes auto; # 自動設置為 CPU 核心數
worker_connections 2048; # 增加最大連接數
6.2 開啟緩存
通過啟用緩存,減輕后端服務器的壓力:
proxy_cache_path /tmp/cache levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
6.3 壓縮傳輸
通過開啟 gzip 壓縮,減少數據傳輸量:
gzip on;
gzip_types text/plain application/json application/javascript text/css;
gzip_min_length 1000; # 只有大于1000字節的文件才進行壓縮