安装和配置 Nginx 以及部署 Java 应用

第一步:安装 Nginx

在 Ubuntu/Debian 上安装
  1. 更新包列表

    bash 复制代码
    sudo apt update
  2. 安装 Nginx

    bash 复制代码
    sudo apt install nginx
  3. 启动 Nginx 并设置开机启动

    bash 复制代码
    sudo systemctl start nginx
    sudo systemctl enable nginx
  4. 验证 Nginx 是否成功启动

    bash 复制代码
    sudo systemctl status nginx
在 CentOS/RHEL 上安装
  1. 更新包列表

    bash 复制代码
    sudo yum update
  2. 安装 Nginx

    bash 复制代码
    sudo yum install epel-release
    sudo yum install nginx
  3. 启动 Nginx 并设置开机启动

    bash 复制代码
    sudo systemctl start nginx
    sudo systemctl enable nginx
  4. 验证 Nginx 是否成功启动

    bash 复制代码
    sudo systemctl status nginx

第二步:配置 Nginx

配置 Nginx 服务器块
  1. 创建一个新的 Nginx 服务器块配置文件

    bash 复制代码
    sudo nano /etc/nginx/conf.d/example.com.conf
  2. 编辑配置文件

    nginx 复制代码
    server {
        listen 80;
        server_name example.com www.example.com;
        return 301 https://$host$request_uri; # 重定向 HTTP 到 HTTPS
    }
    
    server {
        listen 443 ssl; # 监听 HTTPS 请求
        server_name example.com www.example.com;
    
        # SSL 证书路径
        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    
        # 配置 SSL 设置
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout 10m;
        ssl_protocols TLSv1.2 TLSv1.3; # 使用最新的安全协议
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;
    
        location / {
            proxy_pass http://localhost:8080; # 将请求转发给 Java 应用
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Host $server_name;
            proxy_set_header X-NginX-Proxy true;
        }
    
        # 自定义错误页面
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root /usr/share/nginx/html;
        }
    }
  3. 保存并关闭配置文件

  4. 测试配置

    bash 复制代码
    sudo nginx -t
  5. 重启 Nginx 以使更改生效

    bash 复制代码
    sudo systemctl restart nginx

第三步:部署 Java 应用

  1. 安装 Java 运行环境

    bash 复制代码
    sudo apt install openjdk-11-jdk # 对于 Ubuntu/Debian
    sudo yum install java-11-openjdk-devel # 对于 CentOS/RHEL
  2. 安装 Tomcat

    bash 复制代码
    sudo apt install tomcat9 # 对于 Ubuntu/Debian
    sudo yum install tomcat # 对于 CentOS/RHEL
  3. 部署 Java 应用

    • .war.jar 文件放到 Tomcat 的 webapps 目录下。
    • 如果是 .war 文件,Tomcat 会自动解压并部署。
    • 如果是 .jar 文件,需要手动配置 context.xml 并放置在 webapps/ROOT/WEB-INF 目录下。
  4. 启动 Tomcat

    bash 复制代码
    sudo systemctl start tomcat9 # 对于 Ubuntu/Debian
    sudo systemctl start tomcat # 对于 CentOS/RHEL
  5. 设置 Tomcat 开机启动

    bash 复制代码
    sudo systemctl enable tomcat9 # 对于 Ubuntu/Debian
    sudo systemctl enable tomcat # 对于 CentOS/RHEL
  6. 验证 Tomcat 是否启动成功

    bash 复制代码
    sudo systemctl status tomcat9 # 对于 Ubuntu/Debian
    sudo systemctl status tomcat # 对于 CentOS/RHEL

第四步:获取 SSL 证书

  1. 安装 Certbot

    bash 复制代码
    sudo apt install certbot python3-certbot-nginx # 对于 Ubuntu/Debian
    sudo yum install certbot python3-certbot-nginx # 对于 CentOS/RHEL
  2. 获取并设置证书

    bash 复制代码
    sudo certbot --nginx -d example.com -d www.example.com
  3. 自动续期证书

    bash 复制代码
    sudo systemctl restart nginx

完成上述步骤后,Nginx 服务器可以处理 HTTP 和 HTTPS 请求,并将流量转发到 Tomcat 中的 Java 应用。

注意事项

  • 确保防火墙允许 HTTP (80) 和 HTTPS (443) 流量。
  • 根据实际需要调整 SSL 设置。
  • 检查 Tomcat 日志以解决部署问题。
相关推荐
鲨鱼辣钊2 小时前
【FastAPI筑基-Day19】APScheduler定时任务全实战|自动执行、动态启停、后台常驻
java·spring·fastapi
学长毕业设计6 小时前
基于SpringBoot的公益基金管理系统(源码+文档+讲解视频)
java·spring boot·后端
Brilliantwxx6 小时前
【Linux】 进程(9)程序与进程地址空间(基础+进阶+面试题)
linux·运维·服务器·开发语言·c++
东小西6 小时前
【SAA实战】第 3 篇 · 工具调用全攻略:把业务能力交给 Agent 自己调度
java·后端·spring
东小西6 小时前
【SAA实战】第 4 篇 · Agent 短期记忆:saver 让 Agent 跨轮记得住(threadId 隔离)
java·后端·spring
许彰午7 小时前
22-DataCenter报文序列化
java·低代码·架构·状态模式
2601_962065257 小时前
[MySQL] SQL优化之性能分析
java·sql·mysql
小范同学_7 小时前
JDK1.7 与 JDK1.8 HashMap 底层原理对比 + 数组并发扩容死循环详解
java·开发语言
richdata7 小时前
商品数字化不是先做大数据,而是先把数据变成可用决策
大数据·运维·数据治理·商品数字化·智能补货·ai商品决策
weixin_416667968 小时前
【无标题】
运维·服务器·网络