nginx配置多个tomcat并设置ssl证书,将http访问改成https访问解决访问站点提示链接不安全的问题

需求是这样的:两个老项目了,现在http访问老有广告弹出或者提示网站链接不安全。这样很不友好,本来网站流量就少,这样的提示或者广告,用户很反感。
查阅资料得知,需要搞ssl配置,我的服务器是在腾讯云买的,在上面直接找到ssl证书管理
nginx配置多个tomcat并设置ssl证书,将http访问改成https访问解决访问站点提示链接不安全的问题_第1张图片
你要是没有证书的自己点申请免费证书就行。
这些个操作搞定后,点击右面的下载,把证书下载到本地。
因为的我的项目是用的nginx负载均衡tomcat做的,所以找到对应的证书。我的两个域名s.jfq.com和jf3q.com其实是两个tomcat,但都是在一个服务器上的。也就是说两个都指定到同一个IP,只是利用nginx分配了不同的端口。所以我申请了两个证书。
tomcat的配置这里就省略了
最关键的就是nginx的配置,
第一步:上传证书文件
先把咱下载的证书包括.crt和.key文件上传到nginx目录下的,我这边新建一个目录ssl.把争证书都放在了这里。(我这里用的是xftp工具,当然有的人习惯用winscp,这个都无所谓)
nginx配置多个tomcat并设置ssl证书,将http访问改成https访问解决访问站点提示链接不安全的问题_第2张图片
第二步:配置nginx
在conf找到nginx.conf配置文件,修改之前先备份一份,万一出问题还可以还原
upstream api{
server localhost:8090;#tomcat1
}
upstream study{
server localhost:8089;#tomcat2
}
//以上是我的两个tomcat,我这里开的端口分别是8090和8089,下面是http协议这块的配置,我直接重定向到https的协议中去。关键性代码:rewrite ^(.) https://api.jf3q.com$1 permanent;
注意这个api.jf3q.com这个是我起的server_name的名字,根据需要自定义就行了。
server {
listen 80;
server_name api.jf3q.com;
rewrite ^(.
) https://api.jf3q.com$1 permanent;

}
server {
    listen       80;
    server_name  s.jf3q.com;
rewrite ^(.*) https://s.jf3q.com$1 permanent;	
    
}

接下来就是https模块的配置。

server {
listen 443 ssl;
server_name api.jf3q.com;
ssl on;

    ssl_certificate      /usr/local/nginx/ssl/1_api.jf3q.com_bundle.crt;#对应的ssl证书存放的位置,有的可能是.pem文件
    ssl_certificate_key  /usr/local/nginx/ssl/2_api.jf3q.com.key;

    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;

    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;
 #access_log  logs/host.access.log  main;	
location ~ .*\.(jsp|html|htm|do|js|action)?$  {

        proxy_pass  http://api; #这里是访问制定的tomcat1
		
        index index.htm index.html index.jsp;
    }
location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|js|css|xml)$ {
    root /opt/webapps/jf_api;#这里是因为我的项目代码(war包)不是直接放到tomcat的wepapps下。所以我这里配置了下war包的位置,如果你是直接war包扔到webapps下运行的那种就没不要配置这个了。
    expires 7d;		
    }
error_page   500 502 503 504  /50x.html;
location = /50x.html {
      root   html;
}
}

#以下是tomcat2项目二的https配置,和上面的类似,我就不备注解释了
server {
listen 443 ssl;
server_name s.jf3q.com;
ssl on;

    ssl_certificate      /usr/local/nginx/ssl/1_s.jf3q.com_bundle.crt;
    ssl_certificate_key  /usr/local/nginx/ssl/2_s.jf3q.com.key;

    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;

    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;

location ~ .*\.(jsp|html|htm|do|js|action)?$  {

        proxy_pass  http://study; 
   			
        index index.htm index.html index.jsp;
    }
location ~ .*\.(zip|doc|docx|gif|jpg|jpeg|bmp|png|ico|js|css|xml|ttf|woff)$ {
    root /opt/webapps/jfstudy;
    expires 7d;		
    }
error_page   500 502 503 504  /50x.html;
location = /50x.html {
      root   html;
}
location = / {
        root  /opt/webapps/jfstudy;
    index index.html;
    }
}

第三步:验证nginx.conf是否正确。
在这里插入图片描述
如果有这样的提示说明就ok 了。
当然有的人没安装ssl环境啥的,那个百度解决吧,这里不赘述了。有问题可以联系我。
第四步:重启nginx就ok了。
nginx配置多个tomcat并设置ssl证书,将http访问改成https访问解决访问站点提示链接不安全的问题_第3张图片
nginx配置多个tomcat并设置ssl证书,将http访问改成https访问解决访问站点提示链接不安全的问题_第4张图片
之前这里的提示是链接不安全,涉及到支付密码啥的不要外泄,是不是很不爽。

这样的改动是最少的,两个项目已经都变成https访问的了。基本没动项目的代码。当然如果是跨域访问的项目,就是前后端分离的项目,就需要稍微动一下项目代码。
因为里面的前端页面访问接口的时候都是请求的http的形式跨域访问接口。这会要做的就是把前端访问接口的时候,那个http的写法改成https就可以了。否则会出现跨域问题,访问接口无法带回数据。
还有什么问题不懂的可以联系我的qq:1913284695.

你可能感兴趣的:(nginx)