Nginx
ngnix 啟動 isse ipv4 & ipv6
我正在嘗試設置我的第一個 nginx 伺服器,但在設置 ipv4 和 ipv6 時遇到了問題。
我在配置文件的頂部有這個(它是配置文件中唯一的伺服器塊):
server { # Listen for requests on these ports listen 80 default; listen [::]:80 default_server; }
這是我嘗試啟動 ngnix 時遇到的錯誤:
* Restarting nginx nginx nginx: [emerg] bind() to [::]:80 failed (98: Address already in use) nginx: [emerg] bind() to [::]:80 failed (98: Address already in use) nginx: [emerg] bind() to [::]:80 failed (98: Address already in use) nginx: [emerg] bind() to [::]:80 failed (98: Address already in use) nginx: [emerg] bind() to [::]:80 failed (98: Address already in use) nginx: [emerg] still could not bind()
任何幫助表示讚賞。
您嘗試綁定到 IPv4 兩次。
listen 80 default; listen [::]:80 default_server;
預設情況下(在 Linux 上),第二個
listen
指令同時綁定到 IPv4 和 IPv6,除非您使用該ipv6only
選項明確要求它僅綁定到 IPv6。有兩種方法可以解決此問題。選擇一個(但不能同時選擇兩個):
- 刪除第一個
listen
指令作為多餘的。第二個指令將涵蓋通過 IPv4 映射的 IPv6 的 IPv4 和 IPv6 連接。唯一的缺點是您的日誌將以映射形式顯示 IPv4 地址,例如::ffff:203.0.113.25
.- 添加
ipv6only=on
到第二個listen
指令。請注意,從 nginx 1.3.4 開始,
ipv6only=on
現在是預設配置,這使得您的原始配置在這些更高版本中是必需的。在此之前,預設值取決於作業系統。