今天作項目遇到一個需求就是直接經過域名訪問項目時不帶項目名稱而且會自動跳轉到https,可是tomcat默認的是8080和8443,而後windows系統對應的是80和443,因此不少人就理所固然的就將8080改爲80,8443改爲443,事實並不是如此,我也百度了不少文章,可是大多都是抄來抄去,問題非但沒有解決還誤導人,我也是被折騰了很久,廢話很少說,直接進入主題:html
1.改端口:8080改爲80,8443改爲443。全部的redirectPort="8443"都要改爲redirectPort="443"web
2.SSL證書本身能夠到阿里雲上面申請免費的 https://common-buy.aliyun.com...
申請證書後按照此步驟配置:https://help.aliyun.com/docum...apache
3.域名直接訪問(不加項目名):修改<host></host>標籤,demo爲項目名稱,域名地址以百度爲例windows
<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文件,在最下面添加標籤tomcat
<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.com
5.若是存在端口被佔用的狀況須要自行解決了,以443端口爲例,經過輸入 netstat -ano|findstr 443
能夠查看443端口被哪一個進程佔用了,而後去任務管理器中找到對應的進程並結束掉app
如上圖,443端口被5004進程佔用,固然每一個人的電腦不同,以前這個端口是被進程4佔用的,在任務管理器中查看這個進程,有的小夥伴發如今任務管理器不知道怎麼找這個進程4,看下圖webapp
結果發現這個進程是一個NT Kernel & System
,具體什麼意思我也不清楚,關鍵這是個系統進程我也不敢隨意殺掉,而後百度找到一個方法:阿里雲
一、打開regedit 二、找到HKEY_LOCAL_MACHINE目錄 三、找到System 四、找到CurrentControlSet 五、找到Services 六、找到http 七、右邊欄:找到start 八、打開,將3改成4,肯定 九、重啓電腦,就解除了NT Kernel & System佔用443端口
能夠借鑑這篇文章 https://blog.csdn.net/u012554... 下面是我修改後的,我在tomcat根目錄下新建一個webroot文件夾,而後 appBase="webroot" ,path裏面不填,docBase填寫絕對路徑,重啓tomcat就沒有重複加載項目了url