nginx代理https后,应用redirect https变成http,很多页面报404。情况类似http://blog.sina.com.cn/s/blog_56d8ea900101hlhv.html这篇文章中的描述。解决办法:除了nginx配置SSL,在tomcat中也配置SSL。 tomcat配置:<Connector port=”9443″ protocol=”HTTP/1.1″ SSLEnabled=”true”
maxThreads=”150″ scheme=”https” secure=”true”
keystoreFile=”conf/ssl/xxxxxxxxx.jks” keystorePass=”password” clientAuth=”false” sslProtocol=”TLS” /> #端口号可以自定义。#keystoreFile指向刚才的jks文件#keystorePass值为jks密码,就是下面第二步里设置的密码。#这里重点要说明下jks证书生成的方法: 1、获取生成jks文件的需要的文件。这里需要2个文件,1个是私钥文件,另外一个是证书文件。2、用第一步里的2个文件到以下站点生成一个jks文件https://www.ssltools.org/certificate-convert.htm所填项如下:
源格式 pem
目标格式 jks
证书文件 选择第一步里的server.crt
私钥文件 选择第一步里的 key.txt
Pem私钥密码 不填
密钥库密码和确认密码 自己设置一个,不加特殊符号,一会配置文件里用到(如server.xml)
提交后就能或者一个你们域名的jks文件(注意jks要5KB左右才是正确的,2KB左右的链不完整) 3、把jks上传到java容器在的服务器上,路径只要不是webapps下就可以,然后到conf目录下server.xml里配置。 nginx的配置: #红色地方是重点http {…..upstream admin{ server 10.173.18.246:9443; }….. server { listen 443; ….. location ~* ^/admin/.*\.(do|jsp)$ { proxy_pass https://admin; proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }}