Nginx系列-1 Nginx安裝與使用

背景

最近對項目進行了Https改造,改造過程涉及Nginx技術,因此進行簡單總結。
從本文開始將開啟一個新的專題Nginx系列,用于收集Nginx相關的文章,內容將包括:

  • Nginx系列—1 Nginx安裝與使用
  • Nginx系列—2 Nginx配置
  • Nginx系列—3 支持Https
  • Nginx系列—4 Nginx啟動流程
  • Nginx系列—5 Nginx消息處理流程
  • Nginx系列—6 Nginx自定義模塊

本文介紹nginx安裝過程和簡單使用,以及如何將Nginx委托給systemd管理。

1.nginx編譯與安裝

1.1 依賴軟件

(1) gcc編譯器,用于編譯C語言程序

yum install -y gcc
yum install -y gcc-c++

(2) pcre庫,提供正則表達式能力

yum install -y pcre 
yum install -y pcre-devel

(3) zlib庫,用于提供gzip壓縮能力

yum install -y zlib
yum install -y zlib-devel

(4) openssl庫,用于HTTPS能力

yum install -y openssl
yum install -y openssl-devel

說明:如果所需的Nginx不需要SSL能力,則不需要openssl庫。

1.2 編譯和安裝

nginx資源包下載地址: http://nginx.org/download/, 可以選擇所需的版本。這里以1.26.0版本為例進行介紹:

#下載資源
wget http://nginx.org/download/nginx-1.26.0.tar.gz# 解壓資源
tar -zxvf nginx-1.26.0.tar.gz# 編譯nginx
cd nginx-1.26.0/
./configure
./make# 安裝nginx
./make install

configure命令檢測操作系統類型、依賴的軟件等,根據配置參數(后面介紹)生成C源碼文件和Makefile文件; make根據configure命令生成的Makefile文件編譯Nginx生成二進制文件; make install將編譯結果安裝到環境上。

上述執行configure命令時日志部分如下:

[root@124 nginx-1.26.0]# ./configure...+ using system PCRE library+ OpenSSL library is not used+ using system zlib library...

使用了PCRE和zlib,默認沒有使用OpenSSL,即此案例編譯生成的Nginx不支持HTTPS。

說明:執行configure命令時,支持傳入配置參數定制Nginx,不傳則使用Nginx的默認配置。

configure常用配置:

(1) 路徑配置
–prefix 指定安裝后Nginx的根目錄,不指定時默認為/usr/local/nginx;至于其他相對于nginx根路徑的配置,如sbin,conf,errorlog,pid等,一般不需要修改,使用Nginx的默認配置即可。

(2) http配置
nginx默認會將http必要的模塊編譯到nginx中,不需要額外指定;不需要對應模塊,可以使用–without-http_xxx_module配置。
部分http模塊提供定制的功能,需要用戶通過配置指定,如下所示:
[1]–with-http_ssl_module 支持HTTPS模塊(可通過–with-openssl=/path指定編譯環境上openssl的路徑)
[2]–with-http_realip_module 支持從客戶端請求的Header信息中獲取客戶端真是IP地址
[3]–with-http_addition_module 支持在返回HTTP響應給客戶端前在HTTP包體頭部或尾部添加內容
[4]–with-http_sub_module 支持將HTTP響應包中指定字符串進行替換
[5]–with-http_flv_module和–with-http_mp4_module 客戶端播放flv和map格式的視頻時可以拖動

(3) 其他配置
–user和–group可用來指定Nginx運行時的用戶

如nginx安裝的路徑為/usr/lcoal/ewen/nginx,且要求支持https, 上述./configure命令可以修改為:

./configure --prefix=/usr/lcoal/ewen/nginx --with-http_ssl_module --with-http_sub_module

1.3 目錄介紹

上述通過–prex指定了nginx根路徑為/usr/lcoal/ewen/nginx,在執行make install命令后,nginx被安裝到了/usr/lcoal/ewen/nginx路徑下:

[root@124 conf]# cd /usr/lcoal/ewen/nginx
[root@host44 conf]# ls -al
總用量 4
drwxr-xr-x. 2 root root 4096 630 11:26 conf
drwxr-xr-x. 2 root root   40 630 10:22 html
drwxr-xr-x. 2 root root    6 630 10:22 logs
drwxr-xr-x. 2 root root   19 630 10:22 sbin

存在sbin、logs、html、conf四個目錄:
[1] sbin目錄下只有一個nginx文件, 是可執行的二進制文件,用于啟動/停止Nginx等;

[root@124 sbin]# ls -al
-rwxr-xr-x.  1 root root 3930704 630 10:22 nginx

說明:nginx默認已具備可執行權限。

[2] logs目錄存放Nginx運行過程中產生的日志文件。

[3] html目錄存放靜態頁面資源:

[root@124 html]# ls -al
-rw-r--r--.  1 root root 497 630 10:22 50x.html
-rw-r--r--.  1 root root 626 630 11:47 index.html

說明:當前只有兩個文件, 50x.html和index.html分別表示異常頁面和Nginx默認首頁;

[4] conf目錄用于存放nginx的配置文件:

[root@124 conf]# ls -al
-rw-r--r--.  1 root root 1077 6月  30 10:22 fastcgi.conf
-rw-r--r--.  1 root root 1077 6月  30 10:22 fastcgi.conf.default
-rw-r--r--.  1 root root 1007 6月  30 10:22 fastcgi_params
-rw-r--r--.  1 root root 1007 6月  30 10:22 fastcgi_params.default
-rw-r--r--.  1 root root 2837 6月  30 10:22 koi-utf
-rw-r--r--.  1 root root 2223 6月  30 10:22 koi-win
-rw-r--r--.  1 root root 5349 6月  30 10:22 mime.types
-rw-r--r--.  1 root root 5349 6月  30 10:22 mime.types.default
-rw-r--r--.  1 root root 2656 6月  30 10:22 nginx.conf
-rw-r--r--.  1 root root 2656 6月  30 10:22 nginx.conf.default
-rw-r--r--.  1 root root  636 6月  30 10:22 scgi_params
-rw-r--r--.  1 root root  636 6月  30 10:22 scgi_params.default
-rw-r--r--.  1 root root  664 6月  30 10:22 uwsgi_params
-rw-r--r--.  1 root root  664 6月  30 10:22 uwsgi_params.default
-rw-r--r--.  1 root root 3610 6月 30 10:22 win-utf

其中,xx.defualt文件是一個備份或示例配置文件,Nginx不會加載這些文件。如nginx.conf被修改后,可用nginx.conf.default還原nginx.conf至初始安裝狀態。
去除default文件后,余下配置文件可以分為以下4類:
[1] koi-win、koi-utf、win-utf
編碼轉換映射時需要的文件,向客戶端發送響應時,將一種編碼轉換到另一種編碼。

[2] fastcgi, scgi, uwsgi
分別用于 FastCGI、SCGI 、uWSGI 相關的配置(暫未接觸過)。

[3] mime.types

文件擴展名與文件類型映射表,nginx將根據文件中的映射關系設置Http頭域的的Content-Type值;
默認配置一般指定為application/octet-stream。在nginx.conf的http塊中一般固定配置如下:

http {include       mime.types;default_type  application/octet-stream;#...其他配置    
}

[4] nginx.conf

當Nginx被當做反向代理服務器或者web應用時,nginx.conf是配置的核心。這部分內容較多,鑒于篇幅考慮,將在Nginx系列2中進行介紹。

2.nginx命令介紹

[1] 啟動nginx:

./nginx# 可以使用 -c 指定配置文件路徑
./nginx -c /etc/nginx/nginx.conf# 可以使用 -p 指定prefix 相對路徑,此時會覆蓋configure編譯時執行的前綴
./nginx -p /usr/local/ewen/nginx

[2] 停止Ngnix

# 快速停止nginx
./nginx -s stop# 優雅停止,等所有請求處理完再停止
./nginx -s quit

[3] 重載配置文件

# 修改配置文件后,重新加載
./nginx -s reload

[4] 測試配置文件是否正常**

# 檢測配置文件是否正常
./nginx -t

4.使用systemctl管理

說明:由于80端口在當前服務器上已被其他應用占有,案例將nginx.conf配置文件中的80端口修改為8000進行演示.

nginx.service 文件:

[Unit]
Description=nginx-ewen
After=network.target[Service]
User=ewen
Group=ewen
Type=forkingExecStart=/usr/local/ewen/nginx/sbin/nginx  -p /usr/local/ewen/nginx
ExecReload=/usr/local/ewen/nginx/sbin/nginx -p /usr/local/ewen/nginx -s reload
ExecStop=/usr/local/ewen/nginx/sbin/nginx   -p /usr/local/ewen/nginx -s stop
PrivateTmp=true[Install]
WantedBy=multi-user.target

nginx.service 文件放到**/etc/systemd/system**目錄下,執行如下命令后將nginx委托給systemctl管理:

# systemd重載service配置文件
systemctl daemon-reload# 設置nginx開啟自啟動
systemctl enable nginx

由此,可通過systemctl命令來控制nginx的啟停:

[root@124 conf]# systemctl start nginx
[root@124 conf]# systemctl status nginx
● nginx.service - nginx-ewenLoaded: loaded (/etc/systemd/system/nginx.service; enabled; vendor preset: disabled)Active: active (running) since 三 2024-06-30 12:17:16 CST; 8s agoProcess: 22705 ExecStop=/usr/local/ewen/nginx/sbin/nginx -p /usr/local/ewen/nginx -s stop (code=exited, status=0/SUCCESS)Process: 22920 ExecStart=/usr/local/ewen/nginx/sbin/nginx -p /usr/local/ewen/nginx (code=exited, status=0/SUCCESS)Main PID: 22922 (nginx)Tasks: 2CGroup: /system.slice/nginx.service├─22922 nginx: master process /usr/local/ewen/nginx/sbin/nginx -p /usr/local/ewen/nginx└─22923 nginx: worker process630 12:17:16 host44 systemd[1]: Starting nginx-ewen...
630 12:17:16 host44 systemd[1]: Started nginx-ewen.

查看nginx啟動狀態:

[root@124 conf]# ps -ef | grep nginx | grep -v grep
ewen     22922     1  0 12:17 ?        00:00:00 nginx: master process /usr/local/ewen/nginx/sbin/nginx -p /usr/local/ewen/nginx
ewen     22923 22922  0 12:17 ?        00:00:00 nginx: worker process[root@124 conf]# netstat -anp | grep 22922
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN      22922/nginx: master
unix  3      [ ]         STREAM     CONNECTED     78715317 22922/nginx: master
unix  3      [ ]         STREAM     CONNECTED     78715316 22922/nginx: master

此時,nginx服務已經啟動,屬組為ewen, 監聽的端口號為8000.

訪問8000主頁面:

[root@host44 conf]# curl http://localhost:8000
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx gracefully.</em></p>
</body>
</html>

5.日志輪轉

nginx日志需要借助日志輪轉工具實現日志的備份和分割,已在前面的文章中介紹過,請參考:日志輪轉—cron和logrotate.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/37005.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/37005.shtml
英文地址,請注明出處:http://en.pswp.cn/web/37005.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

記一次小程序滲透

這次的小程序滲透剛好每一個漏洞都相當經典所以記錄一下。 目錄 前言 漏洞詳情 未授權訪問漏洞/ 敏感信息泄露&#xff08;高危&#xff09; 水平越權&#xff08;高危&#xff09; 會話重用&#xff08;高危&#xff09; 硬編碼加密密鑰泄露&#xff08;中危&#xff0…

熟練掌握爬蟲技術

一、Crawler、Requests反爬破解 1. HTTP協議與WEB開發 1. 什么是請求頭請求體&#xff0c;響應頭響應體 2. URL地址包括什么 3. get請求和post請求到底是什么 4. Content-Type是什么1.1 簡介 HTTP協議是Hyper Text Transfer Protocol&#xff08;超文本傳輸協議&#xff09;…

整合 Mybatis Plus

什么是 MyBatis Plus&#xff1f; MyBatis Plus &#xff08;簡稱 MP&#xff09; 是一款持久層框架&#xff0c;說白話就是一款操作數據庫的框架。它是一個 MyBatis 的增強工具&#xff0c;就像 iPhone手機一般都有個 plus 版本一樣&#xff0c;它在 MyBatis 的基礎上只做增強…

NOI大綱——普及組——編碼

編碼 ##ASCLL碼 ASCII碼&#xff08;American Standard Code for Information Interchange&#xff0c;美國信息交換標準代碼&#xff09;是一種基于拉丁字母的字符編碼方案&#xff0c;主要用于表示文本數據。ASCII碼包含128個字符&#xff08;0-127&#xff09;&#xff0c…

2024最新boss直聘崗位數據爬蟲,并進行可視化分析

前言 近年來,隨著互聯網的發展和就業市場的變化,數據科學與爬蟲技術在招聘信息分析中的應用變得越來越重要。通過對招聘信息的爬取和可視化分析,我們可以更好地了解當前的就業市場動態、職位需求和薪資水平,從而為求職者和招聘企業提供有價值的數據支持。本文將介紹如何使…

python自動化辦公之PyPDF2

用到的庫&#xff1a;PyPDF2 實現效果&#xff1a;打開pdf文件&#xff0c;把每一頁的內容讀出來 代碼&#xff1a; import PyPDF2 # 打開pdf文件 fileopen(friday.pdf,rb) # 創建pdf文件閱讀器對象 readerPyPDF2.PdfReader(file) # 獲取pdf文件的總頁數 total_pageslen(rea…

Amazon Q——2023 re:Invent 大會的 AI 革新之星

引言 在2023年的 re:Invent 大會上&#xff0c;亞馬遜云科技&#xff08;亞馬遜云科技&#xff09;不僅展示了包括 Amazon Graviton3、Amazon SageMaker Studio Lab、Amazon Connect Wisdom、Amazon QuickSight Q 和 Amazon Private 5G 在內的多項創新產品&#xff0c;還發布了…

【python爬蟲】豆瓣爬蟲學習

文章目錄 網頁地址爬蟲目標技術棧爬蟲代碼注意事項 Python爬蟲學習&#xff1a;我們可以選擇一個相對簡單的網站進行數據抓取。這里以抓取“豆瓣電影Top250”的信息為例&#xff0c;這個網站提供了豐富的電影數據&#xff0c;包括電影名稱、評分、導演、演員等信息。 網頁地址…

AI大模型技術在音樂創造的應用前景

大模型技術在音樂創作領域具有廣闊的應用前景&#xff0c;可以為音樂家、作曲家和音樂愛好者提供以下方面的幫助。北京木奇移動技術有限公司&#xff0c;專業的軟件外包開發公司&#xff0c;歡迎交流合作。 音樂創作輔助&#xff1a;大模型可以幫助音樂家和作曲家生成旋律、和聲…

Win腳本開機自啟ALIst和RClone

轉自個人博客&#xff1a;https://www.jjy2023.cn/2024/05/23/win%e8%84%9a%e6%9c%ac%e5%bc%80%e6%9c%ba%e8%87%aa%e5%90%afalist%e5%92%8crclone/ 在配置完alist和rclone之后&#xff0c;就只需要每次開機啟動兩者就行了&#xff0c;所以感覺使用AListHelper沒有必要&#xff…

算法金 | 協方差、方差、標準差、協方差矩陣

大俠幸會&#xff0c;在下全網同名「算法金」 0 基礎轉 AI 上岸&#xff0c;多個算法賽 Top 「日更萬日&#xff0c;讓更多人享受智能樂趣」 抱個拳&#xff0c;送個禮 1. 方差 方差是統計學中用來度量一組數據分散程度的重要指標。它反映了數據點與其均值之間的偏離程度。在…

Flask無法Debug

問題描述 Flask Debug的時候&#xff0c;可能會無法進入斷點。我使用的是pycharm CE版本。 解決方案 確保pycharm安裝路徑不帶空格。&#xff08;帶空格路徑導致debug程序啟動報錯&#xff09;Gevent compatible&#xff0c;這個東西老的pycharm版本必須勾選它&#xff0c;新…

中霖教育靠譜嗎?在職備考一建好通過嗎?

中霖教育靠譜嗎?在職備考一建好通過嗎? 課程設置&#xff1a;報名后會進行測評&#xff0c;了解學員的知識掌握情況、時間安排和記憶思維特點等&#xff0c;制定更適合的學習計劃。 課程以考試通過為目標&#xff0c;去繁化簡&#xff0c;只講有用的干貨&#xff0c;幫助快…

Python的GIL

Python的GIL是什么&#xff1f;它對多線程編程有什么影響&#xff1f; GIL&#xff08;全局解釋器鎖&#xff09;是Python解釋器中的一個機制&#xff0c;它是為了保證在任何時刻只有一個線程執行Python字節碼。GIL的存在主要因為Python的內存管理和垃圾回收機制是線程不安全的…

使用Vite工具創建項目,并使用Vue Router步驟

步驟 1: 安裝 Vite 首先&#xff0c;確保你的電腦上已經安裝了Node.js和npm。然后&#xff0c;通過以下命令全局安裝Vite&#xff08;如果已經安裝&#xff0c;請跳過此步驟&#xff09;&#xff1a; npm install -g create-vite步驟 2: 創建新的Vue項目 使用Vite創建一個新…

Python 學習之標準庫(二)

Python標準庫是指Python編程語言自帶的一組模塊和包&#xff0c;它們是Python語言的核心組成部分&#xff0c;為開發者提供了豐富的功能和工具&#xff0c;幫助快速實現各種功能需求。以下是對Python標準庫的一些主要內容和模塊的歸納&#xff1a; 1. 數學計算&#xff1a; a.…

Python驅動的智能客服系統構建實錄

Python驅動的智能客服系統構建實錄 作為技術領域的老將&#xff0c;今天我打算帶大家深挖一個熱門應用——智能客服系統&#xff0c;并且如何通過Python這門萬能鑰匙&#xff0c;結合前沿的深度學習技術&#xff0c;賦予其更為人性化、高效的溝通能力。同時&#xff0c;我們不…

VLOOKUP函數在表格的簡單運用-兩個表匹配

1.什么是VLOOKUP&#xff1f; VLOOKUP是Excel中的一個內置函數&#xff0c;主要用于在區域或表格的首列查找指定的值&#xff0c;并返回該行中其他列的值。它特別適用于跨表格數據匹配 2.函數運用 2.1.這邊兩個表取名a表和b表&#xff0c;做為我們的實例表。 表格a包含&…

第二十一站:Java的多彩之旅終結篇

異步編程與反應式系統&#xff1a;應對高并發挑戰 隨著互聯網應用對響應速度和并發處理能力要求的提高&#xff0c;Java生態系統也與時俱進&#xff0c;引入了異步編程模型和反應式編程框架&#xff0c;以應對現代應用的挑戰。 異步編程 Java 8引入了CompletableFuture&…

JavaScript高級程序設計(第四版)--學習記錄之迭代器與生成器(上)

什么是迭代&#xff1f; 迭代的意思是按照順序反復多次執行一段程序。循環是迭代機制的基礎&#xff0c;因為它可以指定迭代的次數&#xff0c;以及每次迭代要執行的操作。 迭代器模式 迭代器模式描述了一個方案&#xff0c;可以把有些結構稱為“可迭代對象” &#xff0c;這些…