一、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,即可通过域名直接访问网站;但是这是错误的!
原因如下:
关键点解析与常见问题
为什么 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)占用。使用非标准端口可以避免冲突。
如何在生产环境中使用标准端口 (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 服务器(如 Nginx 或 Apache HTTPD)作为反向代理。
让反向代理监听 80 (HTTP) 和 443 (HTTPS) 端口。
配置反向代理将收到的请求(特别是动态请求)转发到后台 Tomcat 的 8080 (HTTP) 或 8443 (HTTPS) 端口,或者更常见的是只转发到 8080 (HTTP),由反向代理统一处理 SSL 终止。
优势:
安全性:Tomcat 可以继续以非特权用户运行在非特权端口;反向代理可以作为一道安全屏障。
性能:反向代理擅长处理静态文件(如图片、CSS、JS),减轻 Tomcat 负担;可进行负载均衡、缓存等。
灵活性:更容易管理 SSL/TLS 证书(在代理层配置);方便部署多个应用。
简化配置:Tomcat 只需关注应用本身,无需处理 SSL 或特权端口。
四、端口说明参考
五、总结
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) 端口。这提供了最佳的安全性、性能和灵活性。