https请求nginx转发tomcat实现websocket_tomcat https 转 nginx_ChrylZzz的博客-程序员秘密

技术标签: https  

1.说明:

tomcat+nginx+ssl:nginx配置ssl,tomcat不需要配置ssl

tomcat+ssl:tomcat不需要配置ssl

2.先了解一下http和websocket:

3.再了解一下:客户端,nginx,tomcat,服务端的关系:

那我们开始配置吧!!!这里我只贴出来关键的配置。

4.nginx的配置:

第一步:把nginx的源码上传到linux系统

第二步:把压缩包解压缩。

第三步:进行configure。

./configure \

--prefix=/usr/local/nginx \

--pid-path=/var/run/nginx/nginx.pid \

--lock-path=/var/lock/nginx.lock \

--error-log-path=/var/log/nginx/error.log \

--http-log-path=/var/log/nginx/access.log \

--with-http_gzip_static_module \

--http-client-body-temp-path=/var/temp/nginx/client \

--http-proxy-temp-path=/var/temp/nginx/proxy \

--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \

--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \

--http-scgi-temp-path=/var/temp/nginx/scgi

--with-http_ssl_module 

注意:上边将临时文件目录指定为/var/temp/nginx,需要在/var下创建tempnginx目录

第四步:

make

第五步:

make install

第六步:配置nginx.conf:在http里配置

###################################################
###注意这里修改为https不要与80冲突
###SSL###
server {
    	listen 443; #SSL 访问端口号为 443,https如果端口是443,浏览器会自动隐藏
     	server_name xxx; #填写绑定证书的域名 

     ssl on; #启用 SSL 功能
     ssl_certificate xxx.crt; #证书文件
     ssl_certificate_key xxx.key;	#私钥文件
     ssl_session_timeout 5m;
     ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置,使用的协议
     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; #按照这个套件配置,配置加密套件,写法遵循 openssl 标准
     ssl_prefer_server_ciphers on;

     location / {
            proxy_pass  http://tomcats;
            index       index.html index.htm;
             # 启用支持websocket连接
	    proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
 }

    upstream tomcats{ #配置负载均衡
        server 127.0.0.1:8099 weight=1; 
    #   server 127.0.0.1:8090 weight=1;
    #   server 127.0.0.1:8091 weight=1;
    #   server localhost:8090 weight=1;
    #   server localhost:8090 weight=1;
    }
### 80端口 ###
server{
	listen 		80;
	server_name	xxx; #填写绑定证书的域名
	return      301 https://$server_name$request_uri; #新方式:http强制为https,使用全站加密,HTTP 自动跳转 HTTPS
							#老方式:rewrite ^(.*) https://$host$1 permanent;
}
####################################################

配置文件的主要参数说明如下:

  • listen 443:SSL 访问端口号为 443
  • ssl on:启用 SSL 功能
  • ssl_certificate:证书文件
  • ssl_certificate_key:私钥文件
  • ssl_protocols:使用的协议
  • ssl_ciphers:配置加密套件,写法遵循 openssl 标准

第七步:配置完成后检查nginx配置文件是否有错误

sbin/nginx –t
  • 是,请重新配置。
  • 否,重启 Nginx。
  • sbin/nginx -s reload

     

  • 随即,即可使用 https://xxx 进行访问。

 

5.tomcat配置

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

<!-- ng里配置了ssl,tomcat就不需要配置ssl,如果只是tomcat+ssl则可以用如下配置,
        但是,需要在tomcat的conf目录下引入jks文件,由.crt和.key文件生成。
    这里提供一个转化的连接:https://www.myssl.cn/tools/merge-jks-cert.html
 -->
<!-- 	
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
    maxThreads="150" scheme="https" secure="true"
    keystoreFile="conf/www.domain.com.jks"
    keystorePass="changeit"
    clientAuth="false" sslProtocol="TLS" /> 
-->

配置文件参数

说明

clientAuth

如果设为 true,表示 Tomcat 要求所有的 SSL 客户出示安全证书,对 SSL 客户进行身份验证

keystoreFile

指定 keystore 文件的存放位置,可以指定绝对路径,也可以指定相对于 <CATALINA_HOME> (Tomcat安装目录)环境变量的相对路径。如果此项没有设定,默认情况下,Tomcat 将从当前操作系统用户的用户目录下读取名为 “.keystore” 的文件。

keystorePass

密钥库密码,指定 keystore 的密码。(如果申请证书时有填写私钥密码,密钥库密码即私钥密码,否则填写密钥库密码文件中的密码)

sslProtocol

指定套接字(Socket)使用的加密/解密协议,默认值为 TLS

最后,部署并启动nginx和tomcat即可!

顺便说一句,如果有想看nginx+ssl+websocket请查阅我的其他博客的文章呦~

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41345773/article/details/88965997

智能推荐

人工智能的JAVA实现_天马行空_天马行空的博客-程序员秘密

转载:http://blog.163.com/[email protected]/blog/static/132619458201037113059929/很少有程序员不对这里或者那里所包含的人工智能编程所吸引,然而,许多对AI感兴趣的程序员很快就因其中包含的算法的复杂性而退却。在本文中,我们将讨论一个能大大简化这种复杂性的Java开源工程。   Java面向对象的神经网络(JOONE)是一开源工程,它

软件随想录(local.joelonsoftware.com/wiki)-2004年01月28日 先生可以赏我一个连结程序吗? - Please Sir May I Have a Linker_铁文的博客-程序员秘密

2004年01月28日 先生可以赏我一个连结程序吗? - Please Sir May I Have a Linker The Joel on Software Translation Project:先生可以赏我一个连结程序吗?From The Joel on Software Translation ProjectJump to: navigation,

接口的显示实现和隐式实现_DragonWar%的博客-程序员秘密

接口的实现,上学的时候就接触的概念了,现在毕业工作了,没想到自己有对接口的实现有了新的发现。基础的知识,总是在工作中不断的更新和理解的更加深刻。对于编程语言和平台中的高层建筑,总是会出现不断地变化,但是底层的基础却是一成不变的(变化很小). 所以我认为程序员应该把精力向这些基础的能力倾斜,修炼自己的内力,这样就能够在程序员这个岗位上做到做上一辈子,避开新生力量的竞争和体现自己的价值。...

AAA认证、授权、计费_aaa 中的计费是怎么算的_kyoko的博客-程序员秘密

AAA认证、授权、计费AAA是验证、授权和记账(Authentication、Authorization、Accounting )三个英文单词的简称。其主要目的是管理哪些用户可以访问网络服务器,具有访问权的用户可以得到哪些服务,如何对正在使用网络资源的用户进行记账。具体为:           1、 验证(Authentication): 验证用户是否可以获得访问权限;

GUID分区表(GPT)_weixin_34018202的博客-程序员秘密

转载于:https://blog.51cto.com/haobinnan/157420

随便推点

jquery click 多次绑定,多次触发,怎么清除历史绑定事件_一次触发多次回调_love__coder的博客-程序员秘密

最近在用jquery对一个页面超链接元素进行click事件绑定,绑定调用方法如下:function OpenUrl(url){ $("a[rel='xggl']").click(function () { window.open(url,"_blank");

机器学习 - 正则化方法:L1和L2 regularization、数据集扩增、dropout_Wimb的博客-程序员秘密

正则化方法:防止过拟合,提高泛化能力 常用的正则化方法有:L1正则化;L2正则化;数据集扩增;Droupout方法 (1) L1正则化(2) L2正则化(3) Droupout【参考】https://blog.csdn.net/u012162613/article/details/44261657 ...

数据结构与算法python语言实现(四) 查找和排序_python中递归典型的查找或排序_张柏沛的博客-程序员秘密

本系列文章目录 展开/收起 数据结构与算法python语言实现(一) 算法分析 数据结构与算法python语言实现(二) 线性结构 数据结构与算法python语言实现(三) 递归 数据结构与算法python语言实现(四) 查找和排序 数据结构与算法python语言实现(五) 树 数据...

node.js导出excel表格_LeeBoooo的博客-程序员秘密

一:使用框架 1:express,2:node-xlsx,Github地址,node-xlsx下载方式:npm install node-xlsx --save二:操作步骤1:引入node-xlsx2 : 因为涉及到文件的保存引入node.js中的fs模块,1,2步代码如下let fs = require('fs');let xlsx = require('n...

js如何循环拼接字符串_我是高手高手高高手的博客-程序员秘密

JS循环后,把所有值串成字符串例子1 //用jquery function getTextByJquery() { var str = ""; //遍历name为txt的所有input元素 $("input[name='txt']").each(function () { str += $(t