首页/网络/常用端口速查/80 HTTP 网站服务
0-99 系统端口81 条

80 HTTP 网站服务

万维网明文传输的默认端口;现代站点的合理角色是跳转 443 与承接 ACME http-01 证书验证。

常用端口速查网络更新于 2026-10-13

HTTP 与 80 端口

80 是 HTTP 的默认端口,浏览器访问域名不带端口时默认连它。HTTPS 普及后,80 的合理角色从承载页面变成三件事:把流量 301 跳到 443、承接 ACME 的 http-01 证书验证、以及少数必须固定回调地址的第三方对接。Apache 与 IIS 的默认站点同样监听 80。

基本信息

服务HTTP(Nginx / Apache httpd / IIS)
协议TCP
用途网页访问、跳转 443、ACME 证书验证
权限要求监听 80 需 root 或 CAP_NET_BIND_SERVICE
常见配置/etc/nginx/conf.d/*.conf、/etc/httpd/conf.d/*.conf

典型使用场景

  • 全站 301 跳转到 HTTPS,同时保留裸域名可访问
  • 为 Let's Encrypt 等 ACME 客户端提供 http-01 验证路径
  • 内网工具与状态页:只在内网提供轻量查看页面
  • 老设备或嵌入式系统只支持 HTTP,需单独划一个受控 ingress
  • 第三方回调:对方指定必须用 http 地址回调时,用独立 server 块隔离处理

查看响应头与跳转链

查看响应头与跳转链
curl -sI http://example.com | head -n 8                                  # 状态码、Location、Server
curl -s -o /dev/null -w 'code=%{http_code} url=%{redirect_url}\n' http://example.com/   # 一行抓出跳转目标
curl -sIL http://example.com | grep -iE '^HTTP/|^location:'                # -L 跟随跳转,列出完整跳转链
curl -s -o /dev/null -w '%{http_code}\n' http://example.com/.well-known/acme-challenge/test   # ACME 路径是否可达
ss -lntp | grep ':80 '                                                     # 确认是谁在监听 80

重定向链判读

现象结论处置方向
出现一次 301 后返回 200标准全站跳转无需处理
先 301 再 302跳转配置叠加排查是否 CDN 或负载均衡又加了一层
用 302 做全站跳转临时跳转改为 301,让浏览器与搜索引擎长期记住
跳到 https 后返回 404443 上没有该域名的站点补 server_name 与站点根目录配置
一直 301 指向自身跳转环路检查 listen 与 return 目标是否落在同一个 server 块

输出逐列读法

输出项含义正常/异常
HTTP/1.1 301协议版本与状态码2xx/3xx 正常,5xx 说明后端或配置异常
Location跳转目标地址应为 https:// 同域名,出现其他域名要立刻核对
Server服务端软件标识建议隐藏具体版本号,减少指纹信息
Content-Length 0响应体长度正常,跳转响应通常不带正文

Nginx 80 全量跳转

Nginx 80 全量跳转
server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;   # 保留原始路径与查询串
}
# 改完先测语法再重载
# nginx -t && nginx -s reload

ACME 例外与续期验证

ACME 例外与续期验证
server {
    listen 80;
    server_name example.com;
    location ^~ /.well-known/acme-challenge/ { root /var/www/acme; }   # 验证路径不参与跳转
    location / { return 301 https://$host$request_uri; }
}
# 续期前先确认路径可读
# sudo certbot renew --dry-run
仍用纯 HTTP 承载登录表单或管理页时,口令与 Cookie 明文过网,链路上任何一跳都能读取甚至改写内容。
certbot --webroot 续期只访问 80 上的 /.well-known/acme-challenge/;该路径若被 301 覆盖,续期会静默失败,直到证书过期才被发现,这是证书突然失效最常见的原因。
HSTS 生效后浏览器会直接把 http 改写成 https,不再发出 80 请求;调试跳转配置时用无痕窗口或换测试域名,否则现象会被浏览器缓存干扰。

配置自查清单

  • 确认 80 上只保留极简的跳转块,业务配置全部写在 443 的站点里
  • 确认 ACME 验证路径未被跳转覆盖,且目录对 Web 运行用户可读
  • 确认跳转用 301 并保留原始路径与查询串,不做成无条件跳首页
  • 确认 Server 响应头未暴露具体版本号
  • 确认临时回调或审批类路径有来源限制,不成为新的开放入口
  • 确认监控同时探测 80 与 443,避免只看其中一个而漏掉跳转失效
  • 开启 HSTS 前先确认全部子域名都能以 HTTPS 正常访问

证书续期链路验证

证书续期链路验证
sudo certbot renew --dry-run          # 演练续期,不消耗签发额度
sudo certbot certificates             # 查看当前证书路径与到期时间
sudo nginx -t && sudo nginx -s reload # 续期后重载,让新证书生效
curl -svo /dev/null https://example.com 2>&1 | grep -i 'subject'   # 复核线上证书主体
排查顺序:先用 curl 确认是否 301 以及 Location 是否正确,再带 Host 头直连 127.0.0.1:80 验证后端本身能否以该域名响应,最后核对 443 上对应 server 块是否存在;只盯着浏览器现象容易漏掉 vhost 缺失这类配置问题。
CDN 场景下的 80:回源可以走 80,但边缘到用户仍应走 443;若在 CDN 上开了强制 HTTPS 跳转而源站没同步配置,直接改 hosts 调试会得到与线上不一致的结果,容易误判成源站故障。

易错点

  • 配置强制跳转后忘了给 ACME 验证路径开例外,证书续期失败且不易察觉
  • 80 与 443 各维护一份站点配置,改动只改一处导致内容与权重不一致
  • 用 302 代替 301 做全站跳转,浏览器与搜索引擎不会长期记住
  • 把 80 上的管理页面直接对公网开放,明文口令可被中途截获

数据来源与参考

  • RFC 9110:HTTP 语义
  • RFC 8555:ACME(http-01 验证)
  • Nginx 官方文档

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌