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

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