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