Nginx+Tomcat配置HTTPS/SSL證書

在同時部署了Nginx和Tomcat的服務器上,可以使用Nginx來將服務器地址/域名的80端口映射到Tomcat的8080端口,從而不需要更改tomcat的配置端口來實現域名的直接訪問。

目錄

端口轉發

配置HTTPS/SSL證書

可能出現的問題


 

端口轉發

Nginx配置:

server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass  http://47.95.119.xxx(你的IP地址):8080;
        }
    }

使用以上代碼將80端口映射到Tomcat的8080端口,從而實現不需要加端口號可以直接使用域名/IP地址訪問。

 

配置HTTPS/SSL證書

而進行HTTPS/SSL配置的的時候又遇到了問題,博主使用的是阿里雲提供的免費SSL證書,在下載證書時發現其本身就提供了Nginx和Tomcat兩個版本的證書,具體來使用哪個配置呢?

其實,對於Nginx映射Tomcat的服務器,只需要配置Tomcat的SSL證書就可以了,對於Nginx只需要把原本的地址映射改爲域名映射。

 

以Tomcat8的配置作爲例子:

server.xml配置:

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="443" />


<Connector port="443"
    protocol="HTTP/1.1"
    SSLEnabled="true"
    scheme="https"
    secure="true"
    keystoreFile="證書絕對路徑(證書一般存放於Tomcat下的cert文件夾)"
    keystoreType="PKCS12"
    keystorePass="證書密碼"
    clientAuth="false"
    SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"
    ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256"/>
    

而Nginx的配置更改爲

server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass  http://域名:8080;
        }
    }

如果需要開啓HTTP強制跳轉HTTPS,則需要對web.xml進行配置,在文件</welcome-file-list>後添加以下內容:

<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>

這樣,Nginx+Tomcat服務器的HTTPS/SSL證書配置就完成了!

訪問結果爲:

 

可能出現的問題

出現這種情況是因爲Nginx的端口轉發寫的是IP地址而不是域名

 

如果出現下圖這種情況記得放行443端口!!

 

希望能給各位提供參考和幫助。有問題可以留言或者Q我:9687637

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章