使用 Nginx 反向代理 Tomcat
2018-06-08 本文已影响38人
SkyRiN
概述
最近由于业务需求,需要将 Tomcat 的 8080 端口映射到 443 ,直接通过 https 访问,由于在 Tomcat 配置折腾数次未果,于是想到通过 Nginx 反向代理实现,成功实现后做如下备忘记录
服务器获得 CA 证书
之前服务器已经使用 Certbot 生成了证书,具体可以参考使用 Certbot 安装 Letsencrypt 证书,完成 Letsencrypt 证书安装后,在 /etc/letsencrypt/live/example.com/
下应该有四个证书相关文件
cert.pem
chain.pem
fullchain.pem
privkey.pem
Copy 证书文件
在 nginx 配置目录下新建目录 cert/
来存放证书和密钥文件
mkdir /etc/nginx/cert
复制证书文件到此目录并重命名
cd /etc/nginx/cert
cp /etc/letsencrypt/live/example.com/fullchain.pem ./server.pem
cp /etc/letsencrypt/live/example.com/privkey.pem ./privkey.key
Nginx 代理配置
新建配置文件
cd /etc/nginx/sites-available
touch wtf443
编辑配置文件
vim wtf443
填入如下内容
server {
listen 443;
server_name 127.0.0.1;
ssl on;
root /var/www/wtf443;
index index.html index.htm;
ssl_certificate cert/server.pem;
ssl_certificate_key cert/privkey.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:8080;
#index index.html index.htm;
}
}
server {
listen 80;
server_name 127.0.0.1;
rewrite ^(.*)$ https://$host$1 permanent;
}
使配置生效
完成如上配置后 wtf443 并不生效,还需要在 /etc/nginx/site-enable
目录下添加此文件的软链接
ln -s /etc/nginx/sites-available/wtf443
然后进行如下操作
nginx -t // 检查nginx配置文件是否正确
nginx -s reload // 使配置生效
service nginx restart // 重启 nginx
总结
经过如上操作后,正常情况下就能通过 https://example.com 访问 Tomcat 了,如果不能,先确定 http://example.com:8080 是否能访问 Tomcat ,然后确认 https://example.com 未做代理之前是否能访问