因為對域名訪問什么也不了解,遇到問題就有種不知道從哪里下手的茫然,也就更不知道錯在哪里,前前后后一共折騰了一天多,最后問了阿里客服才成功弄出來,因此記錄一下。
關於服務器的購買、配置,及域名的備案解析可以參考這里。另外要在服務器的安全組配置80端口。
一、端口映射
服務器設備,如果申請域名之后,端口默認指向的為80端口,這里服務是發布在tomcat中,使用的是8080端口,因此需要端口映射,將80端口映射到8080端口。
例: http://127.0.0.1 實際等價於:http://127.0.0.1:80 用的是80端口,因為只有80端口可以省略
又例:http://www.sohu.com/ 實際等價於:www.sohu.com:80
以下是Windows系統中的端口映射方法(Linux系統中可以使用iptables)
端口映射可以使用nginx(需要在服務器安裝nginx),也可以使用netsh。
這里用的netsh,netsh是win7以上系統自帶的,支持IPv4和IPv6。直接cmd,在命令行配置
//添加端口映射 netsh interface portproxy add v4tov4 listenaddress=121.21.36.190 listenport=81 connectaddress=192.168.99.10 connectport=81 //將服務器IP地址為121.21.36.190的端口81映射到服務器IP地址為192.168.99.10的端口8080.現在訪問121.21.36.190:81,實際是跟訪問192.168.99.10:8080效果一樣 //查看已配置的端口映射清單 netsh interface portproxy show v4tov4 //刪除端口映射 netsh interface portproxy delete v4tov4 listenaddress=121.21.36.190 listenport=81
這里遇到的一個問題,端口映射用的ip地址是服務器內網ip,而不是服務器公網ip。配置如圖
后來發現好像不用端口映射也可以,直接把Tomcat的端口改成80就好了
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
直接把port="8080"改為port="80"就可以了。
二、配置Tomcat
打開tomcat/conf/server.conf文件
1. 修改為域名。這里要改兩個地方,如圖
2. 配置docBase。在<Host></Host>里面添加<Context>。path="" docBase=項目在服務器上的絕對路徑。這里項目名稱為SpringDemo,如圖
配置好的server.conf如下:
<Engine name="Catalina" defaultHost="www.***.top"> <!--For clustering, please take a look at documentation at: /docs/cluster-howto.html (simple how to) /docs/config/cluster.html (reference documentation) --> <!-- <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> --> <!-- Use the LockOutRealm to prevent attempts to guess user passwords via a brute-force attack --> <Realm className="org.apache.catalina.realm.LockOutRealm"> <!-- This Realm uses the UserDatabase configured in the global JNDI resources under the key "UserDatabase". Any edits that are performed against this UserDatabase are immediately available for use by the Realm. --> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> </Realm> <Host name="www.***.top" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context docBase="C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\SpringDemo" path="" reloadable="true"/> <!-- SingleSignOn valve, share authentication between web applications Documentation at: /docs/config/valve.html --> <!-- <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> --> <!-- Access log processes all example. Documentation at: /docs/config/valve.html Note: The pattern used is equivalent to using pattern="common" --> <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>
保存server.conf文件,重啟Tomcat,就可以通過域名訪問部署在服務器上的網站了。3w可以帶,也可以不帶。如圖
三、http轉https
已經通過備案的域名,在域名中點擊“SSL證書”,進入證書控制台,對已簽發的證書進行管理,填寫審核信息,提交后幾分鍾就審批下來了,然后下載對應服務器的證書,我用的Tomcat。
然后根據提示信息進行安裝。這里注意要在server.xml中把8443改成443。另外:阿里雲SSL數字證書Tomcat配置部署指導視頻:https://help.aliyun.com/video_detail/54217.html?spm=5176.2020520163.cas.144.36be2b7aWIOL8z
另外在安全組規則配置443端口,如果防火牆沒關的話,在入棧規則配置443端口。
這里遇到一個問題,我是晚上配置的https,但配好之后一直不能通過https訪問,結果等第二天早上再試居然https可以訪問了,難道需要一段等待時間?..