前言
在现代 Web 应用开发中,将 Java 服务部署到服务器并通过 HTTPS 安全访问是一项基础且重要的技能。本文将详细记录从环境准备到最终实现 HTTPS 访问的完整过程,适合新手开发者参考学习。
一、JDK 环境安装
Java 服务运行依赖 JDK 环境,我们选择安装开源免费的 OpenJDK 17 版本。
1. 更新系统索引包
首先需要更新 Ubuntu 系统的软件包索引,确保能获取到最新的软件版本信息:
sudo apt update2. 安装 OpenJDK 17
执行以下命令安装 OpenJDK 17:
sudo apt install openjdk-17-jdk安装过程中系统会自动处理依赖关系,无需额外操作。
3. 验证 JDK 安装结果
安装完成后,通过以下命令验证是否安装成功:
java -version如果安装成功,会显示类似如下的版本信息:
openjdk version "17.0.x" 20xx-xx-xx
OpenJDK Runtime Environment (build 17.0.x+xx-Ubuntu-1ubuntux)
OpenJDK 64-Bit Server VM (build 17.0.x+xx-Ubuntu-1ubuntux, mixed mode, sharing)4. 配置 JAVA_HOME 环境变量
为了让系统和其他工具能正确识别 JDK 位置,需要配置 JAVA_HOME 环境变量:
echo "export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64" >> ~/.bashrc
source ~/.bashrc执行完成后,JAVA_HOME 环境变量将在每次登录时自动生效。
二、Java 服务打包与部署
完成 JDK 环境配置后,接下来需要将开发好的 Java 服务打包并上传到服务器。
1. 服务打包
使用 Maven 工具对 Java 项目进行打包,推荐通过 IDEA 的 Maven 插件操作:
- 在 IDEA 右侧的 Maven 面板中找到项目
- 展开 Lifecycle 选项
- 双击 package 命令执行打包操作
- 打包成功后,会在项目的 target 目录下生成对应的 JAR 文件
2. 上传服务到服务器
将打包好的 JAR 文件通过 SFTP 工具(如 Termius)或 scp 命令上传到服务器的指定目录,例如/opt/java/services/目录。
3. 启动 Java 服务
通过以下命令启动 Java 服务:
nohup java -jar /opt/java/services/your-service.jar &其中&符号表示让服务在后台运行。如果需要更完善的服务管理,建议配置 systemd 服务。
三、Nginx 配置实现 HTTPS 访问
为了实现 HTTPS 访问并优化请求转发,我们需要配置 Nginx 作为反向代理服务器。
1. 创建或编辑 Nginx 配置文件
执行以下命令创建新的 Nginx 配置文件:
sudo nano /etc/nginx/sites-available/your_domain.conf如果你已有配置文件,直接编辑对应文件即可。
2. 配置 HTTPS 与反向代理
在配置文件中添加以下内容,实现 HTTP 到 HTTPS 的跳转以及请求转发:
server {
listen 80;
server_name yourdomain.com; # 替换为你的实际域名
# 将所有HTTP请求强制跳转至HTTPS
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name yourdomain.com; # 替换为你的实际域名
# SSL证书配置(请替换为你的证书实际路径)
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
# SSL安全优化配置
ssl_protocols TLSv1.2 TLSv1.3; # 支持的TLS协议版本
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_session_cache shared:SSL:10m; # SSL会话缓存设置
ssl_session_timeout 10m; # SSL会话超时时间
# 将所有 /app 开头的请求转发到Java服务的9999端口
location /app/ {
proxy_pass http://127.0.0.1:9999;
# 传递原始请求信息(HTTPS环境关键配置)
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; # 重要:传递HTTPS协议信息
# 超时设置(根据实际服务需求调整)
proxy_connect_timeout 300s;
proxy_read_timeout 300s;
}
# 其他路径处理
location / {
# 可以根据需求配置为返回404或指向其他服务
return 404;
}
}3. 启用 Nginx 配置
创建符号链接将配置文件添加到 sites-enabled 目录,使 Nginx 能够识别该配置:
sudo ln -s /etc/nginx/sites-available/your_domain.conf /etc/nginx/sites-enabled/4. 检查并重启 Nginx
配置完成后,先检查配置文件是否有语法错误:
sudo nginx -t如果显示 "nginx: configuration file /etc/nginx/nginx.conf test is successful",说明配置无误,可以重启 Nginx 使配置生效:
sudo systemctl restart nginx四、验证 HTTPS 访问
完成以上所有步骤后,通过浏览器访问https://yourdomain.com/app/user/login(替换为你的实际域名和接口路径),如果能正常访问并获得服务响应,说明整个部署过程成功完成。
常见问题排查
- 如果无法访问 HTTPS 服务,先检查服务器防火墙是否开放 443 端口
- 证书路径错误会导致 Nginx 启动失败,需确保证书文件存在且权限正确
- Java 服务未启动或端口被占用会导致 502 错误,可通过netstat -tlnp查看端口占用情况
- 配置文件修改后未重启 Nginx 会导致配置不生效,记得每次修改后重启服务
通过本文的步骤,你已经成功实现了 Java 服务的部署和 HTTPS 访问配置。在实际生产环境中,还可以根据需求添加服务监控、日志管理等功能,进一步提升服务的稳定性和可维护性。
评论 (0)