Ubuntu下Nginx1.28.0源碼編譯安裝與systemd管理方式解讀
一、環(huán)境與依賴準(zhǔn)備
為確保編譯順利,我們首先更新系統(tǒng)并安裝必要的編譯工具和庫:
sudo apt update
sudo apt install -y build-essential \
libpcre3 libpcre3-dev \
zlib1g zlib1g-dev \
libssl-dev \
wgetbuild-essential:提供gcc、make等基礎(chǔ)編譯工具libpcre3/libpcre3-dev:支持正則匹配(如rewrite模塊)zlib1g/zlib1g-dev:提供 gzip 壓縮功能libssl-dev:開啟 HTTPS/SSL 支持wget:用于下載源碼包
二、下載并解壓 Nginx 源碼
- 切換到用戶主目錄(或其他工作目錄)
- 下載并解壓源碼包
cd ~ wget http://nginx.org/download/nginx-1.28.0.tar.gz tar zxvf nginx-1.28.0.tar.gz cd nginx-1.28.0
若你已將源碼包 nginx-1.28.0.tar.gz 放在本地目錄,同樣執(zhí)行 tar zxvf 并進(jìn)入解壓后的目錄即可。
三、配置編譯選項(xiàng)
使用 ./configure 腳本為編譯過程指定安裝路徑和所需模塊。
本例中啟用了 HTTP、SSL、HTTP/2、gzip、狀態(tài)監(jiān)控、異步 I/O、線程以及 Stream 模塊等常用功能:
./configure \ --prefix=/usr/local/nginx \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_gzip_static_module \ --with-http_stub_status_module \ --with-http_realip_module \ --with-threads \ --with-file-aio \ --with-stream \ --with-stream_ssl_module \ --with-stream_realip_module
--prefix:指定安裝目錄--with-http_stub_status_module:開啟運(yùn)行狀態(tài)頁(可用于監(jiān)控)- 其余模塊可根據(jù)實(shí)際需求增刪。執(zhí)行
./configure --help可查看所有可選項(xiàng)。
四、編譯與安裝
- 編譯:根據(jù)機(jī)器性能,執(zhí)行時(shí)間通常在幾分鐘左右
- 安裝:將編譯成果復(fù)制到指定目錄
make sudo make install
- 編譯完成后,可執(zhí)行文件位于
/usr/local/nginx/sbin/nginx - 默認(rèn)主配置文件:
/usr/local/nginx/conf/nginx.conf - 日志目錄:
/usr/local/nginx/logs/
五、創(chuàng)建 systemd 服務(wù)單元
為了方便開機(jī)自啟及系統(tǒng)統(tǒng)一管理,建議新建一個(gè) systemd 服務(wù)文件:
sudo tee /etc/systemd/system/nginx.service > /dev/null << 'EOF' [Unit] Description=NGINX HTTP and reverse proxy server After=network.target [Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s quit PIDFile=/usr/local/nginx/logs/nginx.pid PrivateTmp=true [Install] WantedBy=multi-user.target EOF
隨后執(zhí)行:
sudo systemctl daemon-reload sudo systemctl enable nginx
六、啟動(dòng)、重載與狀態(tài)檢查
- 啟動(dòng) Nginx
sudo systemctl start nginx
- 查看運(yùn)行狀態(tài)
sudo systemctl status nginx
- 平滑重載配置(修改
nginx.conf后)
sudo systemctl reload nginx
- 停止 Nginx
sudo systemctl stop nginx
七、防火墻設(shè)置與訪問驗(yàn)證
如果系統(tǒng)啟用了 UFW 防火墻,請(qǐng)放行 HTTP/HTTPS 端口:
sudo ufw allow 80/tcp sudo ufw allow 443/tcp
在瀏覽器中訪問服務(wù)器 IP 或綁定的域名,若出現(xiàn)默認(rèn) Nginx 歡迎頁,即代表安裝部署成功。
八、常見故障排查
端口被占用
sudo lsof -i:80
如有其他服務(wù)占用,需停止或修改 Nginx 監(jiān)聽端口。
配置文件語法錯(cuò)誤
/usr/local/nginx/sbin/nginx -t
檢查并修正錯(cuò)誤后再重載。
日志查看
- 訪問日志:
/usr/local/nginx/logs/access.log - 錯(cuò)誤日志:
/usr/local/nginx/logs/error.log
總結(jié)
本文詳細(xì)介紹了在 Ubuntu 上從源碼編譯安裝 Nginx 1.28.0 的全流程,涵蓋依賴環(huán)境準(zhǔn)備、源碼下載解壓、配置編譯選項(xiàng)、make 安裝、systemd 服務(wù)管理及常見排錯(cuò)方法。
通過這種方式,你可以根據(jù)業(yè)務(wù)需求靈活定制 Nginx 功能,并更好地集成到生產(chǎn)運(yùn)維體系中。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Nginx請(qǐng)求訪問控制實(shí)現(xiàn)方案
Nginx并不直接實(shí)現(xiàn)漏桶算法或令牌桶算法,但這些算法在控制網(wǎng)絡(luò)流量和請(qǐng)求速率方面非常有用,這些算法通常在網(wǎng)絡(luò)編程、API服務(wù)、負(fù)載均衡等領(lǐng)域中使用,以確保系統(tǒng)的穩(wěn)定性和性能,這篇文章給大家介紹Nginx請(qǐng)求訪問控制實(shí)現(xiàn)方案,感興趣的朋友跟隨小編一起看看吧2024-05-05
把ImageMagic庫編譯進(jìn)nginx服務(wù)器的一些必要配置
這篇文章主要介紹了把ImageMagic庫編譯進(jìn)nginx服務(wù)器的一些必要配置,本文給出了操作步驟和配置參數(shù)示例,需要的朋友可以參考下2015-06-06
為Node.js程序配置使用Nginx服務(wù)器的簡(jiǎn)明教程
這篇文章主要介紹了為Node.js程序配置使用Nginx服務(wù)器的簡(jiǎn)明教程,Nginx與Node自帶的服務(wù)器一樣都擁有非阻塞的高性能,需要的朋友可以參考下2016-01-01
nginx代理前端請(qǐng)求的實(shí)現(xiàn)示例
本文介紹了在Vue3項(xiàng)目中使用Axios調(diào)用后端接口,并通過Nginx進(jìn)行反向代理以解決跨域問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2026-01-01
一文搞懂Nginx限流(簡(jiǎn)單實(shí)現(xiàn))
這篇文章主要介紹了一文搞懂Nginx限流(簡(jiǎn)單實(shí)現(xiàn)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-05-05
詳解Nginx中常見負(fù)載均衡策略配置與使用場(chǎng)景
負(fù)載均衡(Load Balancing)成為確保系統(tǒng)高可用和高性能的關(guān)鍵技術(shù),本文將詳細(xì)講解 Nginx 的常見負(fù)載均衡策略,并附帶示例配置與適用場(chǎng)景,需要的小伙伴可以了解下2025-09-09
Nginx之location匹配和Rewrite重寫跳轉(zhuǎn)方式
這篇文章主要介紹了Nginx之location匹配和Rewrite重寫跳轉(zhuǎn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06

