杨斌
发布于 2025-06-26 / 14 阅读
0
0

8080、80、8443、443端口及对应http、https协议详解

一、80、443端口

1.80为http协议默认端口,因此域名可为http://yangbin.com

2.443为https协议默认端口,因此域名可为https://yangbin.com

二、tomcat设置https端口时,8443和443区别:

1. 8443端口在访问时需要加端口号,相当于http的8080,不可通过域名直接访问,需要加上端口号;https://yangbin.com:8443

2. 443端口在访问时不需要加端口号,相当于http的80,可通过域名直接访问;例:https://yangbin.com

三、疑问解析

问题:https使用域名访问网站,而不显示端口号?

答:将端口号设置为443,即可通过域名直接访问网站;但是这是错误的!

原因如下:

关键点解析与常见问题

  1. 为什么 Tomcat 默认用 8080 和 8443,而不是 80 和 443?

    • 权限问题: 在 Unix/Linux 系统中,只有 root 用户或具有 CAP_NET_BIND_SERVICE 能力的进程才能绑定 1024 以下的端口(包括 80 和 443)。默认情况下,Tomcat 通常以普通用户(如 tomcat)运行,没有权限绑定 80/443 端口。使用 8080/8443 避免了权限问题,更安全(遵循最小权限原则)。

    • 避免冲突: 80 和 443 端口可能已被同一台服务器上的其他 Web 服务器(如 Apache HTTPD, Nginx)占用。使用非标准端口可以避免冲突。

  2. 如何在生产环境中使用标准端口 (80/443)?

    • 方法一:配置 Tomcat 直接监听 80/443 (不太推荐)

      • 修改 conf/server.xml 文件:

        • 找到 HTTP 连接器 (<Connector port="8080" ...>),将 port 属性改为 80

        • 找到或添加 HTTPS 连接器 (<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" ...>),将 port 属性改为 443必须配置有效的证书和正确的 SSL/TLS 参数。

      • root 启动 Tomcat (不推荐,有安全风险) 或授予运行 Tomcat 的用户绑定特权端口的权限(如使用 setcap 命令或 authbind 工具)。

    • 方法二:使用反向代理 (强烈推荐)

      • 在 Tomcat 前面部署一个成熟的 Web 服务器(如 NginxApache HTTPD)作为反向代理。

      • 让反向代理监听 80 (HTTP) 和 443 (HTTPS) 端口。

      • 配置反向代理将收到的请求(特别是动态请求)转发到后台 Tomcat 的 8080 (HTTP) 或 8443 (HTTPS) 端口,或者更常见的是只转发到 8080 (HTTP),由反向代理统一处理 SSL 终止。

      • 优势:

        • 安全性:Tomcat 可以继续以非特权用户运行在非特权端口;反向代理可以作为一道安全屏障。

        • 性能:反向代理擅长处理静态文件(如图片、CSS、JS),减轻 Tomcat 负担;可进行负载均衡、缓存等。

        • 灵活性:更容易管理 SSL/TLS 证书(在代理层配置);方便部署多个应用。

        • 简化配置:Tomcat 只需关注应用本身,无需处理 SSL 或特权端口。

四、端口说明参考

端口号

默认用途

对应协议

说明

常见场景

8080

Tomcat HTTP 连接器默认端口

HTTP

这是 Tomcat 安装后开箱即用的标准 HTTP 端口。 当你启动 Tomcat 并在浏览器访问 http://localhost:8080http://<服务器IP>:8080 时,就是在使用这个端口访问未加密的 HTTP 服务。 它通常用于开发和测试环境。

本地开发、内部测试环境、不需要加密的内部应用。

80

HTTP 协议的标准端口

HTTP

这是互联网上 HTTP 流量的官方、公认端口。 用户在浏览器输入网址(如 http://example.com)时,浏览器默认会尝试连接服务器的 80 端口。 Tomcat 本身默认 监听 80 端口。 需要修改配置才能使用。

生产环境(通常配合反向代理如 Nginx/Apache,或直接配置 Tomcat 监听)。

8443

Tomcat HTTPS 连接器默认端口

HTTPS

这是 Tomcat 安装后开箱即用的标准 HTTPS 端口(配置了自签名证书后)。 当你访问 https://localhost:8443https://<服务器IP>:8443 时,就是在使用这个端口访问加密的 HTTPS 服务。它通常用于开发和测试环境的 HTTPS 需求。

本地开发测试 HTTPS 功能、内部需要加密的测试环境。

443

HTTPS 协议的标准端口

HTTPS

这是互联网上 HTTPS 流量的官方、公认端口。 用户在浏览器输入网址以 https:// 开头(如 https://example.com)时,浏览器默认会尝试连接服务器的 443 端口。 Tomcat 本身默认 监听 443 端口。 需要修改配置才能使用。

生产环境(必须配置有效的 CA 签发的 SSL/TLS 证书)。

五、总结

  • 8080: Tomcat 默认 HTTP 端口 (开发/测试常用)。

  • 80: 标准 HTTP 端口 (生产环境目标,通常由反向代理或配置后的 Tomcat 监听)。

  • 8443: Tomcat 默认 HTTPS 端口 (开发/测试 HTTPS 常用)。

  • 443: 标准 HTTPS 端口 (生产环境强制要求,必须使用有效证书,通常由反向代理或配置后的 Tomcat 监听)。

  • HTTP (80/8080) 不加密,不安全,仅限非敏感场景。

  • HTTPS (443/8443) 加密,安全,是生产环境的必备

  • 让 Tomcat 直接监听 80/443 需要解决权限问题。

  • 最佳实践: 在生产环境中,使用 反向代理 (Nginx/Apache) 监听 80/443 处理 SSL 终止、静态文件和负载均衡,并将请求代理到 Tomcat 的 8080 (HTTP) 端口。这提供了最佳的安全性、性能和灵活性。


评论