首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Nginx 基礎入門實戰:CentOS 安裝、目錄結構、核心命令、平滑升級、負載均衡與 Rewrite 規則

     編輯:Java 綜合教學

Nginx 基礎入門實戰:CentOS 安裝、目錄結構、核心命令、平滑升級、負載均衡與 Rewrite 規則

Nginx 是高性能 HTTP 與反向代理服務器,佔據全球 Web 服務器市場份額第一。本文記錄 CentOS 7 源碼編譯安裝全過程、目錄職能、核心管理命令、平滑升級步驟、負載均衡核心概念與 Rewrite 規則語法,適合運維與開發快速上手。

一、Nginx 核心特性

二、CentOS 7 源碼編譯安裝 (Nginx 1.8.1 示例)

1. 安裝編譯依賴


yum -y install gcc gcc-c++ autoconf automake
yum -y install pcre pcre-devel      # Rewrite 模塊依賴
yum -y install zlib zlib-devel      # Gzip 模塊依賴
yum -y install openssl openssl-devel # SSL 模塊依賴 (可選)

2. 下載、解壓、配置、編譯、安裝


wget https://nginx.org/download/nginx-1.8.1.tar.gz
tar -zxvf nginx-1.8.1.tar.gz
cd nginx-1.8.1
./configure --prefix=/usr/local/nginx \
            --with-http_ssl_module \
            --with-http_gzip_static_module \
            --with-http_stub_status_module
make
make install

關鍵點:--prefix 指定安裝目錄,默認 /usr/local/nginx。

3. 驗證安裝


ls /usr/local/nginx
# conf/ html/ logs/ sbin/

三、目錄結構職能

特性說明
輕量級主進程 + 多 Worker 進程,內存佔用極低 (靜態內存 ~2-3MB/1萬連接)
高併發Epoll (Linux) / Kqueue (BSD) 事件驅動,單進程支撐 10萬+ 並發連接
反向代理隱藏後端服務器,統一入口,支持負載均衡、緩存、SSL 卸載
負載均衡輪詢、加權、IP Hash、最少連接、一致性 Hash 等多種算法
靜態資源極快服務靜態文件,支持 sendfile、Gzip、瀏覽器緩存控制
RewriteURL 重寫,支持正則、條件判斷、跳轉、限制 IP 訪問
跨平台Linux/Unix/Windows/macOS,Linux 性能最優

四、核心管理命令


# 啟動 (指定配置文件)
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

# 測試配置語法
/usr/local/nginx/sbin/nginx -t
# 或指定配置
/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf

# 從容停止 (完成當前請求)
kill -QUIT `cat /usr/local/nginx/logs/nginx.pid`

# 快速停止 (立即終止)
kill -TERM `cat /usr/local/nginx/logs/nginx.pid`

# 強制殺死
pkill -9 nginx

# 重載配置 (平滑重啟,不中斷服務)
/usr/local/nginx/sbin/nginx -s reload
# 或
kill -HUP `cat /usr/local/nginx/logs/nginx.pid`

# 關閉 Worker 進程 (Master 存活)
kill -WINCH `cat /usr/local/nginx/logs/nginx.pid` # 僅關閉 Worker

# 查看進程
ps -ef | grep nginx
# Master 進程號 + 多個 Worker 進程

五、Nginx 平滑升級 (不停服務升級版本)

  1. 查看當前版本:/usr/local/nginx/sbin/nginx -V
  2. 下載新版本源碼 (如 1.9.2),./configure 相同參數,make 不執行 make install。
  3. 備份舊二進制:cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
  4. 替換二進制:cp objs/nginx /usr/local/nginx/sbin/nginx
  5. 發送升級信號:kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
    • Master 重命名 nginx.pid → nginx.pid.oldbin
    • 啟動新 Master + 新 Worker
    • 舊 Worker 完成當前請求後自然退出
  6. 確認新版本運行正常後,發送 kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin` 關閉舊 Master。
  7. 回滾:若新版有問題,kill -HUP `cat /usr/local/nginx/logs/nginx.pid.oldbin` (舊 Master 重啟舊 Worker) + kill -QUIT `cat /usr/local/nginx/logs/nginx.pid` (關閉新 Master)。

六、負載均衡核心配置


upstream backend {
    # 輪詢 (默認)
    server 192.168.1.10:8080 weight=3;
    server 192.168.1.11:8080 weight=2;
    server 192.168.1.12:8080 backup; # 熱備

    # IP Hash (會話保持)
    # ip_hash;

    # 最少連接
    # least_conn;
}

server {
    listen 80;
    location / {
        proxy_pass https://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;
    }
}

七、Rewrite 規則速查

目錄作用
conf/配置文件 (nginx.conf、mime.types、fastcgi_params)
html/默認靜態網頁根目錄
logs/訪問日志 (access.log)、錯誤日志 (error.log)
sbin/可執行二進制文件 (nginx)

# 例子:靜態化偽靜態
rewrite ^/article/(\d+)\.html$ /article.jsp?id=$1 last;

# 例子:強制 HTTPS
if ($scheme = http) {
    return 301 https://$host$request_uri;
}

# 例子:限制 IP 訪問
location /admin/ {
    allow 192.168.1.0/24;
    deny all;
}

八、Nginx vs Apache 選型建議

指令標誌位含義
rewritelast重寫後繼續匹配新 location (內部跳轉)
rewritebreak重寫後停止匹配,在當前 location 執行
rewriteredirect302 臨時重定向,瀏覽器地址欄變化
rewritepermanent301 永久重定向,SEO 傳遞權重
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
場景推薦理由
高併發靜態/反向代理Nginx事件驅動、內存少、連接多
動態語言 (PHP/Python) 直接解析Apache + mod_php / Nginx + PHP-FPMApache 模塊化成熟,Nginx 需 FastCGI
.htaccess 分布式配置ApacheNginx 不支持,需集中配置
模塊豐富度ApacheNginx 核心模塊少,第三方模塊編譯麻煩