美文网首页
使用 Nginx 反向代理 Tomcat

使用 Nginx 反向代理 Tomcat

作者: SkyRiN | 来源:发表于2018-06-08 19:43 被阅读38次

    概述

    最近由于业务需求,需要将 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 未做代理之前是否能访问

    相关文章

      网友评论

          本文标题:使用 Nginx 反向代理 Tomcat

          本文链接:https://www.haomeiwen.com/subject/kgtzsftx.html