Nginx本身不能直接启动Spring Boot应用,因为它是一个Web服务器/反向代理服务器,而不是应用服务器。但你可以使用Nginx作为Spring Boot应用的反向代理。以下是完整的配置步骤:
# 打包你的Spring Boot应用
mvn package
# 启动Spring Boot应用(假设使用默认端口8080)
java -jar your-application.jar
编辑Nginx配置文件(通常在/etc/nginx/nginx.conf
或/etc/nginx/sites-available/default
):
server {
listen 80;
server_name yourdomain.com; # 替换为你的域名或IP
location / {
proxy_pass http://localhost:8080; # 转发到Spring Boot应用
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;
}
# 可选:静态文件处理
location /static/ {
root /path/to/your/static/files;
expires 30d;
}
}
# 测试配置是否正确
sudo nginx -t
# 重启Nginx使配置生效
sudo systemctl restart nginx
创建服务文件/etc/systemd/system/springbootapp.service
:
[Unit]
Description=Spring Boot Application
After=syslog.target
[Service]
User=youruser
ExecStart=/usr/bin/java -jar /path/to/your-application.jar
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start springbootapp
sudo systemctl enable springbootapp # 设置开机启动
FROM openjdk:11-jre
COPY target/your-application.jar /app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
version: '3'
services:
app:
build: .
ports:
- "8080:8080"
restart: always
nginx:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
depends_on:
- app
events {}
http {
server {
listen 80;
location / {
proxy_pass http://app:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
docker-compose up -d
502 Bad Gateway错误:
静态资源问题:
HTTPS配置:
性能调优:
希望这些方法能帮助你成功使用Nginx代理Spring Boot应用。根据你的具体环境选择最适合的方案。