- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業(yè)務(wù)經(jīng)營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯(lián)網(wǎng)協(xié)會理事單位
- 安全聯(lián)盟認(rèn)證網(wǎng)站身份V標(biāo)記
- 域名注冊服務(wù)機(jī)構(gòu)許可:滇D3-20230001
- 代理域名注冊服務(wù)機(jī)構(gòu):新網(wǎng)數(shù)碼
Nginx 端口監(jiān)聽(listen指令)
藍(lán)隊云小課堂:
本節(jié)主要來介紹 Nginx 中與端口監(jiān)聽有關(guān)的配置指令,下表為端口監(jiān)聽指令及其相關(guān)說明。
名稱 | 端口監(jiān)聽指令 |
指令 | listen |
作用域 | server |
默認(rèn)值 | listen*:80 或 *:8000 |
指令說明 | 服務(wù)監(jiān)聽端口、綁定 IP、監(jiān)聽方式的配置 |
Nginx 服務(wù)通過 listen 指令的指令值監(jiān)聽網(wǎng)絡(luò)請求,可以是 IP 協(xié)議的形式,也可以是 UNIX 域套接字。如果不設(shè)置 listen 指令,Nginx 在以超級用戶運(yùn)行時則監(jiān)聽 80 端口,以非超級用戶運(yùn)行時則監(jiān)聽 8000 端口。
listen 指令的指令值還針對監(jiān)聽方式提供了豐富的參數(shù),如下表所示。
參數(shù) | 默認(rèn)值 | 參數(shù)說明 |
address | -- | 若為 IP 協(xié)議,該參數(shù)值為指定綁定監(jiān)聽端口的 IP 或主機(jī)名; 若為 UNIX 域套接字,則該參數(shù)值為 sock 文件路徑 |
port | 80 | IP 協(xié)議監(jiān)聽的端口 |
bind | address:port | 指定 IP 及端口 |
ipv6only | on | 只接收 IPv6 連接或接收 IPv6 和 IPv4 連接 |
default_server | -- | 當(dāng) http 指令域中包含多個虛擬主機(jī)時, 該參數(shù)用于指定哪個虛擬主機(jī)是默認(rèn)服務(wù), 默認(rèn)將第一個順序的 server 設(shè)為默認(rèn)服務(wù)。 默認(rèn)服務(wù)可以用來處理沒有 server_name 匹配成功的請求 |
http2 | -- | HTTP/2 協(xié)議支持 |
spdy | -- | SDPY 協(xié)議支持,與 HTTP/2 協(xié)議不能同時存在 |
ssl | -- | SSL 支持 |
proxy_protocol | -- | 在指定監(jiān)聽端口上啟用 proxy_protocol 協(xié)議支持 |
fastopen | number | HTTP 處于保持連接(keepalive)狀態(tài)時, 允許不經(jīng)過三次握手的 TCP 連接的隊列的最大數(shù) |
deferred | -- | 添加該參數(shù)后,在 TCP 三次握手的過程中, 檢測到客戶端有數(shù)據(jù)時才將 TCP 狀態(tài)置為 ESTABLISHED 狀態(tài), 沒有數(shù)據(jù)則直接丟棄 |
reuseport | -- | 默認(rèn)情況下,所有的工作進(jìn)程會共享一個 socket 去監(jiān)聽同一 IP 和端口的組合。 該參數(shù)啟用后,允許每個工作進(jìn)程有獨(dú)立的 socket 去監(jiān)聽同一 IP 和端口的組合,內(nèi)核會對傳人的連接進(jìn)行負(fù)載均衡。適用于 Linux 3.9+,DragonFly BSD 和 FreeBSD 12+ |
so_keepalive | off | 配置是否在監(jiān)聽的端口啟用"TCP keepalive"機(jī)制。 當(dāng)設(shè)置為 on 時,默認(rèn)等同于 so_keepalive=30m::10, 表示 30 分鐘無數(shù)據(jù)傳輸時發(fā)送探測包,發(fā)送 10 次, 發(fā)送間隔使用系統(tǒng)內(nèi)核參數(shù) tcp_keepalive_intvl 的設(shè)定值 |
backlog | -1/511 | 當(dāng)阻塞時,設(shè)置掛起連接隊列的最大長度, 在 FreeBSD,DragonFly BSD 和 MacOS 操作系統(tǒng)上,默認(rèn)值為 -1, 其他平臺上值為 511 |
rcvbuf | -- | socket 接收緩沖的大小,默認(rèn)為 8k 字節(jié), 在接收數(shù)據(jù)比較大的場景中可以適當(dāng)調(diào)整 |
sndbuf | -- | socket 發(fā)送緩沖的大小,默認(rèn)為 8k 字節(jié), 在發(fā)送數(shù)據(jù)較大的場景中可以適當(dāng)調(diào)整 |
setfib | number | 為監(jiān)聽套接字設(shè)置關(guān)聯(lián)路由表,僅在 FreeBSD 系統(tǒng)上有效 |
accept_filter | filter | 為監(jiān)聽套接字設(shè)置過濾器,僅支持 FreeBSD 和 NetBSD 5.0+ 系統(tǒng) |
配置樣例如下:
http {
server {
listen 127.0.0.1:8000; # 監(jiān)聽127.0.0.1的8000端口
listen 127.0.0.1; # 監(jiān)聽127.0.0.1的默認(rèn)80端口(root權(quán)限)
listen 8000; # 監(jiān)聽本機(jī)所有IP的8000端口
listen *:8000; # 監(jiān)聽本機(jī)所有IP的8000端口
listen localhost:8000; # 監(jiān)聽locahost的8000端口
listen [::]:8000; # 監(jiān)聽IPv6的8000端口
listen [::1]; # 監(jiān)聽IPv6的回環(huán)IP的默認(rèn)80端口(root權(quán)限)
listen unix:/var/run/nginx.sock; # 監(jiān)聽域套接字文件
listen *:8000 \\ # 監(jiān)聽本機(jī)的8000端口
default_server \\ # 當(dāng)前服務(wù)是http指令域的主服務(wù)
fastopen=30 \\ # 開啟fastopen功能并限定最大隊列數(shù)為30
deferred \\ # 拒絕空數(shù)據(jù)連接
reuseport \\ # 工作進(jìn)程共享socket這個監(jiān)聽端口
backlog=1024 \\ # 請求阻塞時掛起隊列數(shù)是1024個
so_keepalive=on; # 當(dāng)socket為保持連接時,開啟狀態(tài)檢測功能
}
}
更多小知識,可聯(lián)系藍(lán)隊云一起探討。
提交成功!非常感謝您的反饋,我們會繼續(xù)努力做到更好!
這條文檔是否有幫助解決問題?
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP