国产欧美日韩第一页|日本一二三不卡视频|在线精品小视频,亚洲第一免费播放区,metcn人体亚洲一区,亚洲精品午夜视频

Nginx 端口監(jiān)聽(tīng)(listen指令)

2024-07-31 09:10:15 390

Nginx 端口監(jiān)聽(tīng)(listen指令)

藍(lán)隊(duì)云小課堂:

本節(jié)主要來(lái)介紹 Nginx 中與端口監(jiān)聽(tīng)有關(guān)的配置指令,下表為端口監(jiān)聽(tīng)指令及其相關(guān)說(shuō)明。


名稱(chēng)

端口監(jiān)聽(tīng)指令

指令

listen

作用域

server

默認(rèn)值

listen*:80 或 *:8000

指令說(shuō)明

服務(wù)監(jiān)聽(tīng)端口、綁定 IP、監(jiān)聽(tīng)方式的配置

 

Nginx 服務(wù)通過(guò) listen 指令的指令值監(jiān)聽(tīng)網(wǎng)絡(luò)請(qǐng)求,可以是 IP 協(xié)議的形式,也可以是 UNIX 域套接字。如果不設(shè)置 listen 指令,Nginx 在以超級(jí)用戶(hù)運(yùn)行時(shí)則監(jiān)聽(tīng) 80 端口,以非超級(jí)用戶(hù)運(yùn)行時(shí)則監(jiān)聽(tīng) 8000 端口。

 

listen 指令的指令值還針對(duì)監(jiān)聽(tīng)方式提供了豐富的參數(shù),如下表所示。

參數(shù)

默認(rèn)值

參數(shù)說(shuō)明

address

--

若為 IP 協(xié)議,該參數(shù)值為指定綁定監(jiān)聽(tīng)端口的 IP 或主機(jī)名;

若為 UNIX 域套接字,則該參數(shù)值為 sock 文件路徑

port

80

IP 協(xié)議監(jiān)聽(tīng)的端口

bind

address:port

指定 IP 及端口

ipv6only

on

只接收 IPv6 連接或接收 IPv6 和 IPv4 連接

default_server

--

當(dāng) http 指令域中包含多個(gè)虛擬主機(jī)時(shí),

該參數(shù)用于指定哪個(gè)虛擬主機(jī)是默認(rèn)服務(wù),

默認(rèn)將第一個(gè)順序的 server 設(shè)為默認(rèn)服務(wù)。

默認(rèn)服務(wù)可以用來(lái)處理沒(méi)有 server_name 匹配成功的請(qǐng)求

http2

--

HTTP/2 協(xié)議支持

spdy

--

SDPY 協(xié)議支持,與 HTTP/2 協(xié)議不能同時(shí)存在

ssl

--

SSL 支持

proxy_protocol

--

在指定監(jiān)聽(tīng)端口上啟用   proxy_protocol 協(xié)議支持

fastopen

number

HTTP 處于保持連接(keepalive)狀態(tài)時(shí),

允許不經(jīng)過(guò)三次握手的 TCP 連接的隊(duì)列的最大數(shù)

deferred

--

添加該參數(shù)后,在 TCP 三次握手的過(guò)程中,

檢測(cè)到客戶(hù)端有數(shù)據(jù)時(shí)才將 TCP 狀態(tài)置為 ESTABLISHED 狀態(tài),

沒(méi)有數(shù)據(jù)則直接丟棄

reuseport

--

默認(rèn)情況下,所有的工作進(jìn)程會(huì)共享一個(gè)   socket 去監(jiān)聽(tīng)同一 IP

和端口的組合。

該參數(shù)啟用后,允許每個(gè)工作進(jìn)程有獨(dú)立的   socket 去監(jiān)聽(tīng)同一 IP 和端口的組合,內(nèi)核會(huì)對(duì)傳人的連接進(jìn)行負(fù)載均衡。適用于 Linux 3.9+,DragonFly BSD 和 FreeBSD 12+

so_keepalive

off

配置是否在監(jiān)聽(tīng)的端口啟用"TCP keepalive"機(jī)制。

當(dāng)設(shè)置為 on 時(shí),默認(rèn)等同于 so_keepalive=30m::10,

表示 30 分鐘無(wú)數(shù)據(jù)傳輸時(shí)發(fā)送探測(cè)包,發(fā)送 10 次,

發(fā)送間隔使用系統(tǒng)內(nèi)核參數(shù) tcp_keepalive_intvl 的設(shè)定值

backlog

-1/511

當(dāng)阻塞時(shí),設(shè)置掛起連接隊(duì)列的最大長(zhǎng)度,

在 FreeBSD,DragonFly BSD 和 MacOS 操作系統(tǒng)上,默認(rèn)值為 -1,

其他平臺(tái)上值為 511

rcvbuf

--

socket 接收緩沖的大小,默認(rèn)為 8k 字節(jié),

在接收數(shù)據(jù)比較大的場(chǎng)景中可以適當(dāng)調(diào)整

sndbuf

--

socket 發(fā)送緩沖的大小,默認(rèn)為 8k 字節(jié),

在發(fā)送數(shù)據(jù)較大的場(chǎng)景中可以適當(dāng)調(diào)整

setfib

number

為監(jiān)聽(tīng)套接字設(shè)置關(guān)聯(lián)路由表,僅在 FreeBSD 系統(tǒng)上有效

accept_filter

filter

為監(jiān)聽(tīng)套接字設(shè)置過(guò)濾器,僅支持   FreeBSD 和 NetBSD 5.0+ 系統(tǒng)

配置樣例如下:

http {
server {
  listen 127.0.0.1:8000;      #
監(jiān)聽(tīng)127.0.0.1的8000端口
  listen 127.0.0.1;          # 監(jiān)聽(tīng)127.0.0.1的默認(rèn)80端口(root權(quán)限)
  listen 8000;             # 監(jiān)聽(tīng)本機(jī)所有IP的8000端口
  listen *:8000;            # 監(jiān)聽(tīng)本機(jī)所有IP的8000端口
  listen localhost:8000;      # 監(jiān)聽(tīng)locahost的8000端口
  listen [::]:8000;           # 監(jiān)聽(tīng)I(yíng)Pv6的8000端口
  listen [::1];               # 監(jiān)聽(tīng)I(yíng)Pv6的回環(huán)IP的默認(rèn)80端口(root權(quán)限)
  listen unix:/var/run/nginx.sock; # 監(jiān)聽(tīng)域套接字文件

  listen *:8000 \\           # 監(jiān)聽(tīng)本機(jī)的8000端口
      default_server \\     # 當(dāng)前服務(wù)是http指令域的主服務(wù)
       fastopen=30 \\      # 開(kāi)啟fastopen功能并限定最大隊(duì)列數(shù)為30
      deferred \\          # 拒絕空數(shù)據(jù)連接
      reuseport \\         # 工作進(jìn)程共享socket這個(gè)監(jiān)聽(tīng)端口
       backlog=1024 \\     # 請(qǐng)求阻塞時(shí)掛起隊(duì)列數(shù)是1024個(gè)
       so_keepalive=on;    # 當(dāng)socket為保持連接時(shí),開(kāi)啟狀態(tài)檢測(cè)功能

}
}

 

更多小知識(shí),可聯(lián)系藍(lán)隊(duì)云一起探討。

 


提交成功!非常感謝您的反饋,我們會(huì)繼續(xù)努力做到更好!

這條文檔是否有幫助解決問(wèn)題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進(jìn)一步的反饋信息:

在文檔使用中是否遇到以下問(wèn)題: