问题一:tomcat 实现 http 跳转 https【已解决】
今天做项目遇到一个需求就是直接通过域名访问项目时不带项目名称并且会自动跳转到 https,
但是 tomcat 默认的是 8080 和 8443,然后 windows 系统对应的是 80 和 443,所以很多人就理所当然的世界就将 8080 改成 80,8443 改成 443, 事实并非如此,我也百度了很多文章,但是大多都是抄来抄去问题非但没有解决还误导人,我也是被折腾了好久,废话不多说,直接进入主题:
1. 改端口:8080 改成 80,8443 改成 443。所有的 redirectPort=”8443″ 都要改成 redirectPort=”443″
2.SSL 证书自己可以到阿里云上面申请免费的 https://common-buy.aliyun.com… 申请证书后按照此步骤配置:https://help.aliyun.com/docum…
3. 域名直接访问 (不加项目名):修改 <host></host> 标签,demo 为项目名称, 域名地址以百度为例
<Host name=”baidu.com” appBase=”webapps” unpackWARs=”true” autoDeploy=”true”>
<Context docBase=”demo” path=”/demo” reloadable=”true” crossContext=”true”/>
<Valve className=”org.apache.catalina.valves.AccessLogValve” directory=”logs”
prefix=”localhost_access_log.” suffix=”.txt”
pattern=”%h %l %u %t "%r" %s %b” />
</Host>
3. 配置好后到 tomcat 的 conf 目录下面修改 web.xml 文件,在最下面添加标签
<security-constraint>
<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>
4. 通过以上配置就可以实现 baidu.com 直接跳转成 https://www.baidu.com5. 如果存在端口被占用的情况需要自行解决了通过输入 netstat -ano|findstr 443 可以查看 443 端口被哪个进程占用了,然后去任务管理器中找到对应的进程并结束掉
如上图,443 端口被 5004 进程占用,当然每个人的电脑不一样,之前这个端口是被进程 4 占用的,在任务管理器中查看这个进程,有的小伙伴发现在任务管理器不知道怎么找这个进程 4,看下图
结果发现这个进程是一个 NT Kernel & System,具体什么意思我也不清楚,关键这是个系统进程我也不敢随意杀掉,然后百度找到一个方法:
1、打开 regedit
2、找到 HKEY_LOCAL_MACHINE 目录
3、找到 System
4、找到 CurrentControlSet
5、找到 Services
6、找到 http
7、右边栏:找到 start
8、打开,将 3 改为 4,确定
9、重启电脑,就解除了 NT Kernel & System 占用 443 端口
问题二:tomcat 启动时项目会重复加载
可以借鉴这篇文章 https://blog.csdn.net/u012554102/article/details/50409452
下面是我修改后的,我在 tomcat 根目录下新建一个 webroot 文件夹,然后 appBase=”webroot”
path 里面不填,docBase 填写觉得路径,重启 tomcat 就没有重复加载项目了