Nginx 安裝與 HTTPS 配置指南:使用 OpenSSL 搭建安全 Web 服務器
一、Nginx安裝
1. 安裝依賴項
sudo yum groupinstall "Development Tools" -y # 非必須
sudo yum install pcre pcre-devel zlib zlib-devel openssl openssl-devel -y
2.下載Nginx
wget http://nginx.org/download/nginx-1.28.0.tar.gz
3.解壓下載的文件
tar -zxvf nginx-1.28.0.tar.gz
cd nginx-1.28.0
4. 配置安裝選項
在Nginx源代碼目錄下運行./configure
腳本來準備編譯環境。可以使用默認配置或添加自定義選項。
./configure
,加上 --with-http_ssl_module
./configure \
--prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre# 參數項說明---------------------------------------------------------------------------------------------------------------------------
1. --prefix=/usr/local/nginx
作用:指定 Nginx 的安裝目錄。
說明:編譯安裝完成后,Nginx 的可執行文件、配置文件、日志等都會放在這個目錄下。
默認值:如果不指定,默認是 /usr/local/nginx。
? 建議保留:除非你有特殊需求,否則建議使用這個路徑。2. --with-http_ssl_module
作用:啟用 HTTPS/SSL 支持。
說明:只有啟用了這個模塊,Nginx 才能支持 listen 443 ssl;,才能配置 HTTPS 網站。
依賴:需要系統中安裝了 OpenSSL 庫。
? 重要模塊:如果你要配置 HTTPS(如使用 Let's Encrypt 或自簽名證書),必須啟用。3. --with-http_realip_module
作用:允許 Nginx 獲取客戶端的真實 IP 地址。
適用場景:當 Nginx 前面有 CDN、反向代理或負載均衡器時,客戶端的真實 IP 會被代理服務器“隱藏”,這個模塊可以讓你通過設置 set_real_ip_from 和 real_ip_header 來還原真實 IP。
? 推薦啟用:尤其在做訪問控制、日志記錄、限流等操作時非常有用。4. --with-http_stub_status_module
作用:啟用 Nginx 的狀態監控模塊。
用途:可以讓你訪問一個類似 /nginx_status 的頁面,查看當前 Nginx 的連接數、請求數等運行狀態。
? 推薦啟用:用于監控 Nginx 性能,對運維很有幫助。5. --with-http_gzip_static_module
作用:支持預壓縮文件的靜態壓縮傳輸。
說明:比如你有一個 index.html.gz 文件,客戶端支持 gzip 時,Nginx 可以直接發送這個 .gz 文件,而不需要實時壓縮。
? 推薦啟用:提高性能,減少 CPU 開銷。6. --with-pcre
作用:啟用 PCRE(Perl Compatible Regular Expressions)庫支持。
用途:Nginx 的 location、rewrite 等指令依賴正則表達式,PCRE 是實現這些功能的基礎。
? 必須啟用:除非你完全不用正則匹配,否則這個參數必須加上。
5.編譯并安裝
運行make
命令編譯源代碼,然后使用make install
命令安裝Nginx。
make
make install
6. Nginx啟動停止腳本
/usr/local/nginx
#!/bin/bash
# nginx.sh - 控制 Nginx 啟動、停止、重啟、查看狀態
# 適用于手動安裝的 Nginx(路徑:/usr/local/nginx)### 配置項 ###
NGINX_PATH="/usr/local/nginx"
NGINX_EXEC="$NGINX_PATH/sbin/nginx"
NGINX_CONF="$NGINX_PATH/conf/nginx.conf"
NGINX_PID="$NGINX_PATH/logs/nginx.pid"### 檢查是否為 root 用戶運行 ###
if [ "$(id -u)" != "0" ]; thenecho "請使用 root 權限運行此腳本(sudo)"exit 1
fi### 啟動 Nginx ###
start() {echo "正在啟動 Nginx..."### 檢查配置文件 ###$NGINX_EXEC -t > /dev/nu