前言 tomcat配置好了以后默认是使用8080端口访问的,也就是需要在使用"域名.com:8080"才能访问 。这篇总结一下如何修改tomcat配置,使可以用"http://域名.com"或"https://域名.com" 访问 。
【使用https访问 Tomcat10配置端口号为443】
前期准备 环境配置:
- 腾讯云轻量应用服务器: centos 8.2 64bit
- 远程访问推荐使用图形化界面(mac 建议royal tsx,windows建议mobaxterm)
- tomcat 10.0.4 ;
- java 1.8 ;
配置访问80端口即"http://域名.com"不需要证书
配置访问443端口即"https://域名.com" 需要ssl证书,证书可以从你购买服务器的运营商那里获取
具体操作步骤 话不多说,直接进入正题
编辑在 /usr/tomcat/*/conf 目录(这个目录是你安装tomcat的目录)下的 server.xml 文件 。添加如下内容:
// an highlighted block<connector port="443" protocol="http/1.1" sslenabled="true" maxthreads="150" scheme="https" secure="true"#证书保存的路径 keystorefile="/usr/*/conf/域名.com.jks" #密钥库密码 keystorepass="******" clientauth="false"/>详细 server.xml 文件和一些参数解释如下(可以直接复制过去):
<?xml version="1.0" encoding="utf-8"?><!--server 根元素,创建?个server实例,?标签有 listener、globalnamingresources、serviceport:关闭服务器的监听端?shutdown:关闭服务器的指令字符串--><server port="8005" shutdown="shutdown"> <!-- 创建 5 个监听器 start --> <!-- 以?志形式输出服务器 、操作系统、jvm的版本信息 --> <listener classname="org.apache.catalina.startup.versionloggerlistener"/> <!-- 加载(服务器启动) 和 销毁 (服务器停?) apr 。如果找不到apr库, 则会输出?志, 并不影响 tomcat启动 --> <listener classname="org.apache.catalina.core.aprlifecyclelistener" sslengine="on"/> <!-- 避免jre内存泄漏问题 --> <listener classname="org.apache.catalina.core.jrememoryleakpreventionlistener"/> <!-- 加载(服务器启动) 和 销毁(服务器停?) 全局命名服务 --> <listener classname="org.apache.catalina.mbeans.globalresourceslifecyclelistener"/> <!-- 在context停?时重建 executor 池中的线程, 以避免threadlocal 相关的内存泄漏 --> <listener classname="org.apache.catalina.core.threadlocalleakpreventionlistener"/> <!-- 创建 5 个监听器 end --> <!-- 定义服务器全局的jndi 资源 命名服务 --> <globalnamingresources> <resource name="userdatabase" auth="container" type="org.apache.catalina.userdatabase" description="user database that can be updated and saved" factory="org.apache.catalina.users.memoryuserdatabasefactory" pathname="conf/tomcat-users.xml"/> </globalnamingresources> <!-- 该标签?于创建 service 实例,默认使? org.apache.catalina.core.standardservice 。 默认情况下,tomcat 仅指定了service 的名称, 值为 "catalina" 。 service ?标签为 : listener、executor、connector、engine, 其中: listener ?于为service添加?命周期监听器, executor ?于配置service 共享线程池,(可以给多个 connector连接器使用) connector ?于配置service 包含的链接器, engine ?于配置service中链接器对应的servlet 容器引擎 --> <service name="catalina"> <!-- 默认情况下,service 并未添加共享线程池配置 。如果我们想添加?个线程池, 可以在<executor> 下添加如下配置: name:线程池名称,?于 connector中指定 nameprefix:所创建的每个线程的名称前缀,?个单独的线程名称为:nameprefix+线程编号 maxthreads:池中最?线程数 minsparethreads:活跃线程数,也就是核?池线程数,这些线程不会被销毁,会?直存在 maxidletime:线程空闲时间,超过该时间后,空闲线程会被销毁,默认值为6000(1分钟),单位毫秒 maxqueuesize:在被执?前最?线程排队数?,默认为int的最?值,也就是?义的?限 。除?特殊情况,这个值 不需要更改,否则会有请求不会被处理的情况发? prestartminsparethreads:启动线程池时是否启动 minsparethreads部分线程 。默认值为false,即不启动 threadpriority:线程池中线程优先级,默认值为5,值从1到10 classname:线程池实现类,未指定情况下,默认实现类为 org.apache.catalina.core.standardthreadexecutor 。 如果想使??定义线程池?先需要实现org.apache.catalina.executor接?--> <executor name="tomcatthreadpool" nameprefix="catalina-exec-" maxthreads="200" minsparethreads="100" maxidletime="60000" maxqueuesize="integer.max_value" prestartminsparethreads="true" threadpriority="5" classname="org.apache.catalina.core.standardthreadexecutor"/> <!-- connector 标签?于创建链接器实例,默认情况下,server.xml 配置了两个链接器,?个?持http协议,?个?持ajp协议 ?多数情况下,我们并不需要新增链接器配置,只是根据需要对已有链接器进?优化 port: 端?号,connector ?于创建服务端socket 并进?监听, 以等待客户端请求链接 。如果该属性设置为0, tomcat将会随机选择?个可?的端?号给当前connector 使? protocol: 当前connector ?持的访问协议 。默认为 http/1.1 , 并采??动切换机制选择?个基于 java nio 的链接器或者基于本地apr的链接器(根据本地是否含有tomcat的本地库判定) connectiontimeout: connector 接收链接后的等待超时时间, 单位为 毫秒 。-1 表示不超时 。 redirectport: 如果当前接收的是一个 https 的请求,那么tomcat 会将请求转发到 redirectport指定的端口 。 比如现在设定的:8443 端口当前connector 不?持ssl请求, 接收到了?个请求, 并且也符合security-constraint 约束,需要ssl传输,catalina?动将请求重定向到指定的端? 。 executor: 指定共享线程池的名称, 也可以通过maxthreads、minsparethreads 等属性配置内部线程池 。 uriencoding: ?于指定编码uri的字符编码, tomcat8.x版本默认的编码为 utf-8 , tomcat7.x版本默认为iso8859-1 --> <!--org.apache.coyote.http11.http11nioprotocol, ?阻塞式 java nio 链接器,tomcat8配置nio会报错,可能是已经集成了nio的原因--> <connector port="80" protocol="http/1.1" connectiontimeout="20000" redirectport="443" executor="tomcatthreadpool" uriencoding="utf-8"/> <!-- certificatekeystorefile 用于指定证书所在的目录 ; certificatekeystorepassword 用于指定证书的密码;type是使用的加密算法--> <connector port="443" protocol="org.apache.coyote.http11.http11nioprotocol" maxthreads="150" schema="https" secure="true" sslenabled="true"> <sslhostconfig> <certificate certificatekeystorefile="conf/你的域名.cn.jks" certificatekeystorepassword="你申请证书时提交密码" type="rsa" /> </sslhostconfig> </connector> <!-- define an ajp 1.3 connector on port 8009 --> <connector protocol="ajp/1.3" address="::1" port="8009" redirectport="443" /> <!--name: ?于指定engine 的名称, 默认为catalina defaulthost:默认使?的虚拟主机名称, 当客户端请求指向的主机?效时, 将交由默认的虚拟主机处 理, 默认为localhost--> <engine name="catalina" defaulthost="localhost"> <realm classname="org.apache.catalina.realm.lockoutrealm"> <realm classname="org.apache.catalina.realm.userdatabaserealm" resourcename="userdatabase"/> </realm> <!--host 标签?于配置?个虚拟主机 name:该host的名称 appbase :指定 war包放置的路径,可以是绝对路径,也可以是相对路径(相对路径,相对的就是tomcat的安装目录 unpackwars :是否自动解压 war包 autodeploy:是否自动部署 (有点热部署的效果)--> <host name="localhost" appbase="webapps" unpackwars="true" autodeploy="true"> <!-- 记录当前 host 处理请求的日志 --> <valve classname="org.apache.catalina.valves.accesslogvalve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b"/> </host> </engine> </service></server>其中有一个需要注意的地方就是,证书的位置certificatekeystorefile可以填绝对路径,也可以填相对路径 。如果填写的是相对路径,那地址应该是conf的上一层目录(如果你把jks文件放在server.xml的同级目录下,此处应该填"conf/域名.jks"),我因为这个踩过一些坑 。
http 自动跳转 https 的安全配置(可选) 如果您需要将 http 请求自动重定向到 https 。您可以通过以下操作设置:
编辑 /usr/*/conf 目录下的 web.xml 文件,找到 标签 。
请在结束标签 后面换行,并添加以下内容:
<login-config> <!-- authorization setting for ssl --> <auth-method>client-cert</auth-method> <realm-name>client cert users-only area</realm-name> </login-config> <security-constraint> <!-- authorization setting for ssl --> <web-resource-collection> <web-resource-name>ssl</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>confidential</transport-guarantee> </user-data-constraint> </security-constraint>
如何检验配置是否成功 修改server.xml文件后,停止tomcat服务,在/usr/tomcat/*/bin目录下输入:
./shutdown.sh然后以下命令检查配置文件是否有误,如果有报错信息就在网上搜索一下或者自己解决就好了:
./configtest.sh以上步骤没有问题以后,输入以下命令就可以使用"https://域名.com"访问tomcat了 。
./startup.sh网上的教程大部分都只说./shutdown.sh和./startup.sh两个命令重启tomcat,但是有时候重启时有一些报错信息并不显示,就是访问80端口没有问题,但是443端口配置有错无法访问 。
还要注意的是,./configtest.sh命令一定要在./shutdown.sh停止tomcat之后执行,要不然会出现端口已被占用的错误 。
结语 最近在忙最近的毕业设计,最近做后端接口和最近写网页,然后在腾讯云上面买了一台服务器还有一个域名(总共花了80块钱,租了一年) 。花了半个月终于备案完成,于是迫不及待的把自己写的网页传上去 。其中配置docker、tomcat、mysql、rabbitmq、redis都遇到一些坑 。希望可以帮到大家吧 。
[1]: 腾讯云tomcat 服务器 ssl 证书安装部署(jks 格式)
到此这篇关于tomcat10配置端口号为443(使用https访问)的文章就介绍到这了,更多相关tomcat10配置端口号为443内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
-- 展开阅读全文 --
推荐阅读
- Tomca启动闪退问题解决(八大类)
- Tomcat日志自动分割的三种方法
- Flink实践Savepoint使用示例详解
- 使用keytool生成证书 Tomcat服务器配置https认证
- Win11怎么添加语音? Win11添加新语音包的技巧
- 双子座男生和狮子座女生的星座配对
- 最易被爱情蒙上眼睛的星座女
- 爱情路上最常跌倒的星座
- 啥星座谈恋爱最容易吃亏