以下是一段真实日志:
43.248.187.60 – – [23/Jun/2026:02:35:52 +0800] “CONNECT www.baidu.com:443 HTTP/1.1” 400 166 “-” “-” 43.248.187.60 – – [23/Jun/2026:02:35:52 +0800] “CONNECT www.baidu.com:443 HTTP/1.1” 400 166 “-” “-“
这是Nginx 访问日志,含义很明确:
- 来源 IP:
43.248.187.60 - 时间:
23/Jun/2026:02:35:52 +0800 - 请求方法:
CONNECT - 目标:
www.baidu.com:443 - 协议:
HTTP/1.1 - 状态码:400 Bad Request
- 发送字节:166
这日志是什么意思?
CONNECT请求 这是代理请求,客户端试图让你的服务器充当代理,去连接百度 443 端口。- 状态码 400 你的 Nginx 不支持 / 不允许 CONNECT 代理,直接拒绝了这个请求,返回 400 错误。
- 而系统日志连续两条相同记录 说明客户端重试了一次,依然被拒绝。
对服务器的影响
- 正常安全现象,不是攻击,也不会造成危害。
- 只是有人 / 程序试图用你的服务器做 HTTP 代理,被直接拒绝
- 可以忽略,不用处理
当然我们这样操作:屏蔽 CONNECT 请求的 Nginx 配置怎么写?
直接给你可直接复制粘贴的 Nginx 屏蔽 CONNECT 请求配置,两种常用方案任选。
方案一:全局拦截(推荐)
假如你服务器有多个站点,推荐此方法,它会对当前服务器上所有站点生效。
在 nginx.conf 的 http {} 块里加:
if ($request_method = CONNECT) {
return 403;
}
作用:整个 Nginx 所有站点都拒绝 CONNECT 代理请求,直接返回 403,不再打日志。
方案二:只在某个站点拦截
在对应 server {} 块里加:
if ($request_method = CONNECT) {
return 403;
}
方案三:完全不记录、直接丢弃(最干净)
直接把这类请求丢弃。
if ($request_method = CONNECT) {
access_log off;
return 444;
}
444是 Nginx 专用码:直接关闭连接,不返回任何内容access_log off这条请求不再写日志,你的日志就干净了
改完后记得重载
nginx -t
systemctl reload nginx
# 或者
service nginx reload
这样你日志里就不会再出现这类 CONNECT 记录了。