https请求nginx转发tomcat实现websocket

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请查阅我的其他博客的文章呦~

猜你喜欢

转载自blog.csdn.net/qq_41345773/article/details/88965997