概述
最近由于業(yè)務(wù)需求胆萧,需要將 Tomcat 的 8080 端口映射到 443 渤闷,直接通過 https 訪問蝙叛,由于在 Tomcat 配置折騰數(shù)次未果襟诸,于是想到通過 Nginx 反向代理實(shí)現(xiàn)享潜,成功實(shí)現(xiàn)后做如下備忘記錄
服務(wù)器獲得 CA 證書
之前服務(wù)器已經(jīng)使用 Certbot 生成了證書困鸥,具體可以參考使用 Certbot 安裝 Letsencrypt 證書,完成 Letsencrypt 證書安裝后剑按,在 /etc/letsencrypt/live/example.com/
下應(yīng)該有四個(gè)證書相關(guān)文件
cert.pem
chain.pem
fullchain.pem
privkey.pem
Copy 證書文件
在 nginx 配置目錄下新建目錄 cert/
來存放證書和密鑰文件
mkdir /etc/nginx/cert
復(fù)制證書文件到此目錄并重命名
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
填入如下內(nèi)容
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
然后進(jìn)行如下操作
nginx -t // 檢查nginx配置文件是否正確
nginx -s reload // 使配置生效
service nginx restart // 重啟 nginx
總結(jié)
經(jīng)過如上操作后,正常情況下就能通過 https://example.com 訪問 Tomcat 了艺蝴,如果不能猬腰,先確定 http://example.com:8080 是否能訪問 Tomcat ,然后確認(rèn) https://example.com 未做代理之前是否能訪問