这把我难住了。
我有一个运行 nginx + php-fpm 的本地开发设置,其中我使用 .localhost 作为每个项目的工作域。昨天,Chrome 停止使用本地域。相反,它只是返回连接被拒绝。 DevTools 将错误显示为
(failed) net::ERR_CONNECTION_RESET
。
访问 http://127.0.0.1 可以,但当然不适用于本地项目。
Safari 继续使用 .localhost。
Chrome:版本90.0.4430.212(官方版本)(x86_64) 操作系统:macOS 11.4 (20F71)
尝试了几种不同的方法,例如:
chrome://net-internals/#dns
chrome://net-internals/#hsts
从 chrome://net-internals/#events 创建网络日志然后查看不同的事件后找到了解决方案。发现了这个:
t=18295 [st=0] +SOCKET_ALIVE [dt=4]
--> source_dependency = 5112 (TRANSPORT_CONNECT_JOB)
t=18295 [st=0] +TCP_CONNECT [dt=1]
--> address_list = ["[::1]:80","127.0.0.1:80"]
--> canonical_name = ""
t=18295 [st=0] TCP_CONNECT_ATTEMPT [dt=1]
--> address = "[::1]:80"
t=18296 [st=1] -TCP_CONNECT
--> source_address = "[::1]:56378"
t=18296 [st=1] +SOCKET_IN_USE [dt=3]
--> source_dependency = 5111 (HTTP_STREAM_JOB)
t=18296 [st=1] SOCKET_BYTES_SENT
--> byte_count = 719
t=18298 [st=3] SOCKET_READ_ERROR
--> net_error = -101 (ERR_CONNECTION_RESET)
--> os_error = 54
t=18299 [st=4] -SOCKET_IN_USE
t=18299 [st=4] SOCKET_POOL_CLOSING_SOCKET
--> reason = "Connection was closed when it was returned to the pool"
t=18299 [st=4] -SOCKET_ALIVE
Chrome 似乎默认使用 IPv6。
解决方案 将
listen [::]:80 ipv6only=off;
添加到 nginx 站点配置并重新启动 nginx。
谢谢你!我花了几天时间试图找出为什么我的设置不起作用,这最终解决了它。