说在前面的话:
其实吧,东西必须有说明,否则都不知道怎么用,如果没有直接的说明,我们可以间接来做。(这才是正确的食用方法,如果看不懂可以加qq聊:1021752458)
开始
需求:我把web项目部署到腾讯云服务器上(ubuntu)的webapps下了,但要求得用https访问。
官方文档有文档,但是以tomcat7.0为例的,我用的是tomcat9,官方没提供安装说明,懒人一个,不愿意去翻官方文档里,(下面提供一种解决方式)
(2020-4-10更新–>tomcat9安装ssl证书)
这时候用nginx来解决就可以,腾讯云的nginx的文档没问题!(别看到nginx就不看了,这里只用到了最基本的东西,就是映射一下端口就可以。)
tomcat保持默认就好,仍然为8080端口
重点:nginx还可以完成80端口和443端口的开放。(没必要一直折腾tomcat的配置文件)
安装nginx: apt install nginx
配置文件在/etc/nginx/sites-available下那个default就是。
配置文件中本来就有一个server 是监听80端口的,这时你再添加一个server 443端口。代码如下
(假设你的域名是www.XXX.CN)
server {
listen 80 default_server;
listen [::]:80 default_server;
# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name localhost;
location / {
#!!!!!这部分注解掉!!!!!!
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
#try_files $uri $uri/ =404;
#!!!!!此处可以将80端口映射到8080,也就是监听了80端口
proxy_pass http://localhost:8080;
}
}
server {
#SSL 访问端口号为 443
listen 443;
#填写绑定证书的域名
server_name www.XXX.CN;
#启用 SSL 功能
ssl on;
#证书文件名称
ssl_certificate 1_www.XXX.CN_bundle.crt;
#私钥文件名称
ssl_certificate_key 2_www.XXX.CN.key;
ssl_session_timeout 5m;
#请按照这个协议配置
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#请按照这个套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
#!!!!重点在这!!!代理到8080端口
proxy_pass http://localhost:8080;
}
}
运行sudo nginx -t检查配置文件有没有错误
然后把你的文件部署到tomcat,启动tomcat。
然后启动nginx
sudo systemctl start nginx
另外说明:关闭nginx是sudo systemctl stop nginx