一、Nginx 的概念
Nginx 是一個高性能的 HTTP 和反向代理服務器,也是一個 IMAP/POP3/SMTP 代理服務器。它以其高并發處理能力、低資源消耗和穩定性而聞名。Nginx 由 Igor Sysoev 開發,首次公開發布于 2004 年。Nginx 可以作為網頁服務器、反向代理服務器、電子郵件代理服務器以及 TCP/UDP 負載均衡器。
- Web 服務器:Nginx 可以直接提供靜態內容(如 HTML、CSS、圖片等)給客戶端瀏覽器。
- 反向代理服務器:Nginx 可以接收客戶端請求,然后將請求轉發到后端服務器,并將后端服務器的響應返回給客戶端。這種方式可以隱藏真實的后端服務器,提高安全性,并實現負載均衡。其配置示例如下:
http { upstream backend { server backend1.example.com; server backend2.example.com; } server { listen 80; server_name example.com; location / { proxy_pass //backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } } - 負載均衡:Nginx 可以將請求分發到多臺后端服務器上,以平衡負載,提高系統可用性和響應速度。可通過在配置中的upstream backend代碼段內添加weight=x實現。
- 動靜分離:nginx能將動態內容(如 PHP、Java 等生成的內容)和靜態內容(如 HTML、CSS、JavaScript、圖片等)分開處理。靜態內容可以直接由 Nginx 提供服務,而動態內容則通過反向代理傳遞給后端應用服務器處理。這樣可以減輕后端服務器的壓力,提高響應速度。其配置示例如下:
http { upstream backend { server backend1.example.com; } server { listen 80; server_name example.com; # 靜態內容配置 location /static/ { alias /path/to/static/files/; expires 30d; } # 動態內容配置 location / { proxy_pass //backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } }
二、Nginx 常見字段含義
在 Nginx 配置文件中,常用的字段包括:
- server:定義虛擬主機。
- location:匹配特定的 URL 路徑,并對其應用特定的配置。
- listen:指定 Nginx 監聽的 IP 地址和端口。
- root:指定網站根目錄。
- index:指定默認的索引文件。
- proxy_pass:指定反向代理的目標地址。
- upstream:定義一組后端服務器,用于負載均衡。

三、天翼云開源鏡像站Nginx部署涉及步驟
部署 Nginx 通常涉及以下幾個步驟:準備環境、安裝 Nginx、配置 Nginx、啟動和管理 Nginx 服務。下面是詳細的部署過程:
①準備環境(CtyunOS/CentOS/RHEL)
sudo yum groupinstall "Development Tools"
sudo yum install pcre pcre-devel zlib zlib-devel openssl openssl-devel
②通過包管理器安裝nginx
sudo yum install epel-release
sudo yum install nginx
③配置nginx
Nginx 的主配置文件通常位于 /etc/nginx/nginx.conf (示例)或 /usr/local/nginx/conf/nginx.conf(示例),示例配置如下:
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections ½048;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/conf.d/*.conf;
}
在 /etc/nginx/conf.d/ 目錄下創建一個新的配置文件,例如 example.com.conf,并進行虛擬主機配置:
server {
listen 80;
server_name example.com;
root /var/www/example.com;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location /api/ {
proxy_pass //localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
④啟動和管理nginx服務
檢查語法:sudo nginx -t
重新加載配置:sudo systemctl reload nginx 或者 sudo /usr/local/nginx/sbin/nginx -s reload
啟動和停止服務:sudo systemctl start nginx/sudo systemctl stop nginx 或者 sudo /usr/local/nginx/sbin/nginx -s stop
⑤防火墻配置
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
⑥監控和日志
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log
總結
- 反向代理:Nginx 作為中間層,將客戶端請求轉發到后端服務器,并將響應返回給客戶端。
- 負載均衡:Nginx 將請求均勻分配到多個后端服務器,以提高系統性能和可用性。
- 動靜分離:Nginx 直接提供靜態內容,將動態內容轉發到后端應用服務器,從而優化性能。
通過以上配置,Nginx 可以有效地管理和優化 Web 應用程序的流量,并與CDN加速策略結合,使用CDN的標準能力分區域回源,使用SNAT限制訪問,建設ovs內網通道,使用雙活方案等,確保系統的安全性、穩定性和高性能。