• Tomcat部署一个简单站点页面;使用Nginx做该站点反向代理;站点改为https(Windows操作系统)


    本次涉及的工具:Tomcat;Nginx;openssl;WinSCP

    1.Tomcat部署一个简单站点页面

    使用Tomcat之前要配置好JDK环境变量,此处不演示

    Tomcat有3种部署Web应用的方法,这里我采用最简单的一种直接放到webapps目录下

    进入Tomcat文件夹

    再进入webapps文件夹

    在webapps文件夹中新建一个文件夹jiandanwangye

    在jiandanwangye中新建一个index.html文件(index是默认的欢迎界面)

    index.html中写了点简单的html

    保存html文件

    进入Tomcat文件夹下的bin目录

     双击startup.bat启动Tomcat

    系统会弹出一个黑框

     打开浏览器,在地址栏中输入http://localhost:8080/jiandanwangye

     部署成功

     2.使用Nginx做该站点反向代理

    Tomcat的默认端口是8080,但一般我们使用的URL是省略了端口号,浏览器对于http协议默认采用的是80端口。

    可以使用Nginx做反向代理,从而不需要更改Tomcat的默认端口来实现省略端口号访问。

    进入nginx文件夹中的conf文件夹

     编辑nginx.conf文件

     将此段代码用#注释掉

     新添加一段代码,通过proxy_pass配置反向代理

     保存文件

    在进入nginx文件夹,双击nginx.exe

     Nginx不像Tomcat会弹出个黑框,但实际上Nginx已经启动,打开任务管理器可以看到Nginx的进程

    打开浏览器,在地址栏中输入http://localhost/jiandanwangye

     反向代理成功,可以看到请求从80端口转发到了Tomcat的8080端口。

    3.站点改为https

    SSL基于公用密钥和私人密钥,用户使用公用密钥来加密数据,但解密数据必须使用相应的私人密钥。使用SSL安全机制的通信过程如下:用户与服务器建立连接后,服务器会把数字证书与公用密钥发送给用户,用户端生成会话密钥,并用公共密钥对会话密钥进行加密,然后传递给服务器,服务器端用私人密钥进行解密,这样,用户端和服务器端就建立了一条安全通道。

    SSL安全机制是依靠数字证书来实现,所以需要先生成证书,这里通过Linux中自带openssl来生成自签名证书

    生成自签名证书的基本步骤如下:
    1.生成私钥(Private Key)文件
    2.生成证书(签名)请求文件CSR,需要使用私钥
    3.生成自签名证书文件,需要使用证书请求文件

    1.生成私钥文件

    openssl genrsa -aes128 -out cert.key 2048   生成一个名为cert.key,长度为2048位,并用aes128加密的私钥

     之后会提示设置私钥密码,需要输入两次

    openssl rsa -in cert.key -out cert.key  删除密钥中的密码。如果不删除密码,在应用加载的时候会出现输入密码进行验证的情况,不方便自动化部署。

    2.生成证书(签名)请求文件CSR

    openssl req -new -key cert.key -out cert.csr  生成证书请求文件

    需要依次输入国家,地区,城市,组织,组织单位,Common Name和Email。其中Common Name为必填项,写域名

    3.生成自签名证书(Certificate)文件,需要使用证书请求文件

    openssl req -x509 -days 3650 -sha256 -key cert.key -in cert.csr -out cert.crt    生成一个有效期为10年,sha256签名的证书

    3步操作共生成了3个文件

     使用WinSCP工具将cert.crt和cert.key传到Windows系统中

     将cert.crt和cert.key放到nginx文件夹中的conf文件夹里

    编辑nginx.conf文件

    将监听80端口和443端口的配置改为

    server {
            listen       80;
            server_name  localhost;
            return       301 https://$server_name$request_uri; #将http访问转为https
        }
    
    server {
            listen       443 ssl;
            server_name  localhost;
    
            ssl_certificate      cert.crt;
            ssl_certificate_key  cert.key;
    
            ssl_session_cache    shared:SSL:1m;
            ssl_session_timeout  5m;
    
            ssl_ciphers  HIGH:!aNULL:!MD5;
            ssl_prefer_server_ciphers  on;
    
            location / {
                proxy_pass   http://localhost:8080;
            }
        }

    保存文件,开启Tomcat和Nginx。

    在浏览器中输入http://localhost/jiandanwangye

     可以看到站点已经从http改为https(不安全是由于证书是自签名证书)

    总结:通过以上配置,浏览器发送的请求是发送到 Nginx ,Nginx 作为代理服务器再转发到 Tomcat,浏览器和 Nginx 之间以 HTTPS 协议传输数据,而 Nginx 和 Tomcat 之间通过 以 HTTP 协议传输数据。
    Nginx 作为中间的代理服务器,Tomcat作为应用服务器。

  • 相关阅读:
    单例模式(Singleton)
    建造者模式(Builder和Director)
    原型模式(Prototype)
    备忘录模式(Memento)
    观察者模式(Observer)
    工厂模式(Factory)
    状态模式(State)
    模板方法模式(Template Method)
    策略模式(Strategy)
    微信小程序------小程序初步学习
  • 原文地址:https://www.cnblogs.com/ye-xin/p/12761384.html
Copyright © 2020-2023  润新知