我试图使用参考文档强制SSL
https://docs.spring.io/spring-boot/docs/current/reference/html/howto-security.html#howto-启用https
不过我已经有了
@Configuration
class WebSecurityConfiguration {
当我添加扩展WebSecurityConfigrerAdapter
,甚至没有受保护的空配置(HttpSecurity超文本传输协议)
时,然后对非OAuth2页面/home/
的请求会无缘无故地重定向到/login
。它与属性设置一起工作。只需通过扩展类扩展WebSecurityConfigrerAdapter
就会破坏应用程序。OAuth2还保护了其他不相关的路由。我以前在设置OAuth2时见过这种非确定性的随机行为。
这是WebSecurityConfiguration
类的概要。
@Configuration
class WebSecurityConfiguration {
@Autowired
UserMapper userMapper;
@Bean
PasswordEncoder passwordEncoder() {
@Bean
protected UserDetailsService userDetailsService() {
就这样。
在这个回答中,我尝试添加一个Nginx配置,以重定向到SSLhttps://stackoverflow.com/a/53310987/148844,但没用。它确实重定向到SSL,但所有路径都有404个错误
HTTP Status 404-/home
键入状态报告
消息/home
说明请求的资源不可用
<apachetomcat .0.47
因此,它强制使用SSL并访问Tomcat,但Spring Boot应用程序完全一团糟。就好像ZIP中的WAR文件从未部署过一样。
参考:https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/java-tomcat-proxy.html#java-tomcat代理nginx
我认为您不必关心在tomcat
或应用程序
端启用SSL
,它不是必需的,只需启用SSL
直到nginx
。
您只需在nginx
上终止SSL,并将代理/反向代理
传递给tomcat
。
这里有一些参考资料来证明我的上述观点。https://docs.nginx.com/nginx/admin-guide/security-controls/terminating-ssl-http/https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-load-balancing-with-ssl-termination
在您的情况下,您需要遵循以下步骤。
1) 创建00_应用程序。conf
文件,并将其放在。ebextensions/nginx/conf.d/elasticbeanstalk/。
2)00_application.conf
文件应该有以下内容。
server {
listen 443 ssl;
server_name www.example.com;
ssl_certificate www.example.com.crt;
#...
location /{
//your tomcat port, I'm here assuming the your beanstalkserver tomcat is listing to 8080.
proxy_pass http://127.0.0.1:8080;
}
}
3) 停止列出默认端口80并重定向到443,这意味着如果您有http://foo.bar/
作为您的域,您可以重定向它https://foo.bar/
,打开nginx。conf
文件位于。ebextensions/nginx/nginx。conf
。另外,确保写下以下行,include conf.d/elasticbeanstalk/*。形态
server {
listen 80;
server_name foo.bar;
return 301 https://foo.bar$request_uri;
}
我认为O-Auth、none of Auth、Spring boot v/s非Spring boot应用在这里不那么重要。
请确保遵循AWS文档中的注释,以及扩展默认nginx配置一节。具体阅读关于我希望能回答你问题的便条。我并没有在beanstalk上测试上述所有内容,但其余的都是在EC2上测试的,即使用nginx代理的tomcat。试试这个,并在评论部分发布你可能遇到的具体问题。
我放弃了使用Spring Boot,因为它太不稳定了,我求助于Nginx配置选项。这很有效,尽管对于制作拉链来说似乎过于冗长。弹性豆茎中还有一个错误的额外问题!
AWS Elastic Beanstalk Tomcat可与之配合使用。战争,但不是。拉链
当部署ZIP时,它不会部署WAR!所以我必须创建一个解决方案来在ZIP中创建两个WAR文件。(只有一个,即使称为ROOT. war
,也不起作用。)
我找不到用Maven创建空文件的方法,所以我创建了一个空的empty。war
文件,并将其捆绑在ZIP中,以诱使Elastic Beanstalk正确运行和部署应用程序。真是一团糟!天哪!
<plugin> <!-- To add .ebextensions/ Nginx config for ElasticBeanstalk -->
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptors>
<descriptor>assembly.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
<id>bin</id>
<baseDirectory>/</baseDirectory>
<formats>
<format>zip</format>
</formats>
<files>
<file>
<source>empty.war</source>
<outputDirectory/>
</file>
<file>
<source>${project.build.directory}/AppName-0.0.3-SNAPSHOT.war</source>
<outputDirectory/>
<destName>ROOT.war</destName>
</file>
</files>
<fileSets>
<fileSet>
<directory>${project.basedir}</directory>
<outputDirectory>/.ebextensions/nginx/conf.d/elasticbeanstalk/</outputDirectory>
<includes>
<include>force-https.conf</include>
</includes>
</fileSet>
</fileSets>
</assembly>
配置文件就在项目根目录中。我不知道还能把它放在哪里——它不是源代码。
if ($http_x_forwarded_proto = 'http') {
return 301 https://$host$request_uri;
}
http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html
我有Kafka Streams java应用程序启动并运行。我试图使用KSQL创建简单的查询,并使用Kafka流来实现复杂的解决方案。我希望将KSQL和Kafka流作为Java应用程序运行。 我打算通过https://github.com/confluentinc/ksql/blob/master/ksqldb-examples/src/main/java/io/confluent/ksql/em
连接到上游时,我收到一个nginx错误。 我已经阅读并应用了导致504网关超时问题的Nginx反向代理。然而,我的情况略有不同,因为我有三个endpoint要代理。 我的nginx.conf: 我的"/"和带有端口: 8080代理的应用程序是预期的,但是我的带有端口: 8000的应用程序没有代理,并且得到了上面提到的超时异常。如果我尝试用端口请求应用程序: 8000,应用程序会按预期工作。 什么可
我在Heroku上成功运行了一个节点应用程序。我已经购买了加急SSL证书,一切正常。我去https...并获得一个完整的“绿色条”,证明该站点是通过https提供服务的 但是,非 SSL 标准 http 仍然可用。如何强制应用通过 https 提供服务?谢谢
我正在尝试使用 Django 通过 Apache 2.4.18 提供网页mod_wsgi并在访问本地主机时收到错误 403 禁止。 系统:LXLE Unix Apache 2.4.18 Django版本1.11.17 libapache2-mod-wsgi-py3i 遵循的程序:https://www.digitalocean.com/community/tutorials/how-to-serv
我似乎不能强迫https在弹性Beanstalk的自由使用层上。 关于如何在amazon elastic beanstalk上强制https而又不通过健康检查,我尝试了以下建议 使用此Apache重写规则 当我这样做时,http请求不会像我想的那样被重定向到https。相反,http页会正常加载。我也尝试使用X-Forwarded-Port报头,得到了同样的结果。 我也试过下面的重写规则 而此规则
这个问题已经出现过好几次了,尽管似乎没有任何有效的解释。(或者也许我没有在这个叫做互联网的混乱中找到它)。。。 我正在开发一个android应用程序,它会打开一个包含上传按钮的HTML页面。它在WebView中不起作用。 我试过:http://m0s-programming.blogspot.in/2011/02/file-upload-in-through-webview-on.html 但是e