AWS Elastic Beanstalk Spring Boot fat JAR:找不到jsp
Posted
技术标签:
【中文标题】AWS Elastic Beanstalk Spring Boot fat JAR:找不到jsp【英文标题】:AWS Elastic Beanstalk SpringBoot fat WAR : jsp not found 【发布时间】:2021-03-29 01:42:09 【问题描述】:我有
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
在我的 application.properties 中。我用gradle bootWar
创建了一个独立的战争。 jsp 文件在本地运行时可以正常解析,但在 eb 上找不到 jsp 文件,并且以 404 结尾。我使用的是简单的 eb amz linux 2 环境。
值得注意的是 eb 如何运行文件:java -jar application.**jar**
而不是 java -jar application.**war**
。
我的问题是:
-
将其作为 WAR 运行会解决问题吗?如何让 eb 将其作为 WAR 运行?
如果答案。 #1 是在 eb tomcat 环境中使用非独立 WAR,我必须使用哪些选项才能使其使用 ssl?独立 WAR 使用应用程序属性配置 ssl。这会继续有效吗?
感谢您的帮助。
【问题讨论】:
【参考方案1】:我使用带有 Thymeleaf 的 Spring Boot 应用程序,从未见过在模板文件夹中找不到视图的问题。请参阅此 AWS 教程,该教程构建了一个调用 AWS 服务并将其部署到 AWS Elastic Beanstalk 的基本 Spring Boot 应用程序。
顺便说一下,这个应用程序是作为 JAR 部署的:
https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javav2/usecases/creating_first_project
【讨论】:
是的,thymeleaf 适用于 jar 包,但 afaik jsp 不适用。这是因为包结构,但我不完全理解根本原因。【参考方案2】:我修复了 war 打包的问题,并将其部署在 eb tomcat 环境中。 SSL 现在由 nginx 反向代理而不是应用服务器处理。
这是我的 nginx 代理配置,以备不时之需:
user nginx;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
worker_processes auto;
worker_rlimit_nofile 32714;
events
worker_connections 1024;
http
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
include conf.d/*.conf;
map $http_upgrade $connection_upgrade
default "upgrade";
server
listen 443 default ssl;
server_name localhost;
error_page 497 https://$host$request_uri;
ssl_certificate <full-path-to-fullchain.pem>;
ssl_certificate_key <full-path-to-privkey.pem>;
ssl_session_timeout 5m;
ssl_protocols TLSv1.1 TLSv1.2;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_prefer_server_ciphers on;
if ($ssl_protocol = "")
rewrite ^ https://$host$request_uri? permanent;
client_header_timeout 60;
client_max_body_size 10M;
client_body_timeout 60;
keepalive_timeout 60;
gzip off;
gzip_comp_level 4;
gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;
# Include the Elastic Beanstalk generated locations
include conf.d/elasticbeanstalk/*.conf;
server
listen 80;
return 301 https://$host$request_uri;
【讨论】:
以上是关于AWS Elastic Beanstalk Spring Boot fat JAR:找不到jsp的主要内容,如果未能解决你的问题,请参考以下文章
AWS Elastic Beanstalk CLI 安装错误