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作为应用服务器。

原文地址:https://www.cnblogs.com/ye-xin/p/12761384.html