現在項目都分拆成了幾個或更多的微服務子系統,新老系統迭代時存在springmvc的模塊,也存在springboot的模塊,另考慮tomcat本身的壓測併發上限在300-500,通過nginx來均衡,一個tomcat只跑一個應用,或是直接springboot的jar運行,通通由nginx監聽80和443端口,再轉發。這樣即可以增強併發,各個子模塊維護更新時重啓也不會相互影響。
nginx和tomcat的安裝和基本配置,本文不再贅述,重點來記錄下nginx+tomcat接入阿里雲的ssl證書,希望對大家有所幫助。
一、下載安裝證書
申請阿里雲證書過程省略,通過審覈發佈後,點擊下載證書
這裏選擇Nginx/Tengine,點擊下載。把下載到的證書0123456789.pem和0123456789.key複製到服務$nginx$/cert/目錄下
二、修改轉發規則
# 強制所有http訪問都轉爲https訪問
server {
listen 80;
server_name mydomain.com; #綁定的域名
rewrite ^(.*)$ https://$host$1 permanent;
}
server {
listen 443;
server_name mydomain.com; #綁定的域名
ssl on;
ssl_certificate cert/0123456789.pem;
ssl_certificate_key cert/0123456789.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://localhost:8080;
# 如果有websocket的 下面這幾句後才能支持ws
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Origin "";
}
}
cmd->進入nginx目錄,鍵入:nginx -s reload 執行重新加載配置
三、修改Tomcat的Service.xml
找到<Connector />配置
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
添加proxyPort="8443"
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"
redirectPort="8443" proxyPort="8443" />
在Host中添加RemoteIpValue
<Host name="mydomain.com" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.RemoteIpValve"
remoteIpHeader="x-forwarded-for"
remoteIpProxiesHeader="x-forwarded-by"
protocolHeader="x-forwarded-proto" />
</Host>
重啓tomcat完成配置,到這裏就完成https配置。