深入理解nginx

2021-08-10 07:04:57 字數 3255 閱讀 8365

1. 檢視核心版本

因為2.6以上的核心才支援epoll,nginx的高併發的特性依賴epoll

uname -a

「linux com.guang 3.10.0-514.16.1.el7.x86_64 #1 smp wed apr 12 15:04:24 utc 2017 x86_64 x86_64 x86_64 gnu/linux」

2. 安裝gcc

因為nginx是c寫的

yum list gcc

「gcc.x86_64 4.8.5-11.el7 @base」

gcc -v

「gcc version 4.8.5 20150623 (red hat 4.8.5-11) (gcc) 「

3. 安裝gcc-c++

使用c++來編寫nginx http模組

yum list gcc

「gcc-c++.x86_64 4.8.5-11.el7 @base」

4. 安裝pcre

pcre,perl 相容的正規表示式,如果想要在編寫的模組中使用正則,那麼需要安裝此軟體.反之亦然(不用則不裝)

yum install -y pcre pcre-devel

太麻煩了,一次說完吧

yum list gcc

yum list gcc

yum install -y zlib zlib-devel

yum install -y openssl openssl-devel

zlib的作用: zlib庫用於對http包的內容做gzip格式的壓縮, 如果我們在nginx.conf裡配置了gzip on,並指定對於某些型別(content-type) 的http響應使用gzip來進行壓縮以減少網路傳輸量, 那麼, 在編譯時就必須把zlib編譯進nginx

openssl的作用: 如果我們的伺服器不只是要支援http, 還需要在更安全的ssl協議上傳輸http, 那麼就需要擁有openssl了。 另外, 如果我們想使用md5、 sha1等雜湊函式, 那麼也需要安裝它

nginx源**存放目錄

nginx編譯階段產生的中間檔案存放目錄

部署目錄

日誌檔案存放目錄

只針對最通用的、 使nginx支援更多併發請求的tcp網路引數

修改/etc/sysctl.conf

fs.file-max = 999999

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_keepalive_time = 600

net.ipv4.tcp_fin_timeout = 30

net.ipv4.tcp_max_tw_buckets = 5000

net.ipv4.ip_local_port_range = 1024

61000

net.ipv4.tcp_rmem = 4096

32768

262142

net.ipv4.tcp_wmem = 4096

32768

262142

net.core

.netdev_max_backlog = 8096

net.core

.rmem_default = 262144

net.core

.wmem_default = 262144

net.core

.rmem_max = 2097152

net.core

.wmem_max = 2097152

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_max_syn.backlog=1024

sysctl-p

這幾個引數其實很常見耶

難怪我覺得眼熟,原來就是描述http的一些引數

file-max: 這個引數表示程序(比如乙個worker程序) 可以同時開啟的最大控制代碼數, 這個引數直接限制最大併發連線數, 需根據實際情況配置。

tcp_tw_reuse: 這個引數設定為1, 表示允許將time-wait狀態的socket重新用於新的tcp連線, 這對於伺服器來說很有意義, 因為伺服器上總會有大量time-wait狀態的連線。

tcp_keepalive_time: 這個引數表示當keepalive啟用時, tcp傳送keepalive訊息的頻度。預設是2小時, 若將其設定得小一些, 可以更快地清理無效的連線。

tcp_fin_timeout: 這個引數表示當伺服器主動關閉連線時, socket保持在fin-wait-2狀態的最大時間。

tcp_max_tw_buckets: 這個引數表示作業系統允許time_wait套接字數量的最大值,如果超過這個數字, time_wait套接字將立刻被清除並列印警告資訊。 該引數預設為180000, 過多的time_wait套接字會使web伺服器變慢。

tcp_max_syn_backlog: 這個引數表示tcp三次握手建立階段接收syn請求佇列的最大長度, 預設為1024, 將其設定得大一些可以使出現nginx繁忙來不及accept新連線的情況時,linux不至於丟失客戶端發起的連線請求

ip_local_port_range: 這個引數定義了在udp和tcp連線中本地(不包括連線的遠端)埠的取值範圍。

net.ipv4.tcp_rmem: 這個引數定義了tcp接收快取(用於tcp接收滑動視窗) 的最小值、 預設值、 最大值。

net.ipv4.tcp_wmem: 這個引數定義了tcp傳送快取(用於tcp傳送滑動視窗) 的最小值、 預設值、 最大值。

netdev_max_backlog: 當網絡卡接收資料報的速度大於核心處理的速度時, 會有乙個佇列儲存這些資料報。 這個引數表示該佇列的最大值。

rmem_default: 這個引數表示核心套接字接收快取區預設的大小。

wmem_default: 這個引數表示核心套接字傳送快取區預設的大小。

rmem_max: 這個引數表示核心套接字接收快取區的最大大小。

wmem_max: 這個引數表示核心套接字傳送快取區的最大大

《深入理解nginx》總結

一些指標 和nginx有關的核心調優 可以修改 etc sysctl.conf來更改核心引數調優 nginx為訪問第三方服務做的優化 在用nginx開發模組時,如果需要訪問第三方服務,不能自己簡單的用套接字程式設計,會破壞nginx全非同步架構。nginx提供了兩種全非同步通訊方式 upstream...

深入理解Nginx 閱讀筆記 一

眾所周知,apache lighttpd tomcat jetty iis等都是著名的web伺服器 這裡就不詳細介紹這幾個伺服器了,有興趣的可以自己查資料 那為什麼我要特意學習nginx呢?最重要的原因當然是 網際網路公司 尤其是杭州的某個電商公司 面試的時候可以瞎xx吹一波,顯得自己很叼 開玩笑的...

深入理解C語言 深入理解指標

關於指標,其是c語言的重點,c語言學的好壞,其實就是指標學的好壞。其實指標並不複雜,學習指標,要正確的理解指標。指標也是一種變數,占有記憶體空間,用來儲存記憶體位址 指標就是告訴編譯器,開闢4個位元組的儲存空間 32位系統 無論是幾級指標都是一樣的 p操作記憶體 在指標宣告時,號表示所宣告的變數為指...