我有一个NGINX服务器,然后是一个Tomcat作为Servlet容器。 我从球衣2.25.1升级到2.26,我可以让它发挥作用:
我将服务器中的Java版本从jdk1.8.0_91更新为jdk1.8.0_161。 我在REST项目中更新了依赖项:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.glassfish.jersey</groupId>
<artifactId>jersey-bom</artifactId>
<version>${jersey.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!-- Jersey core Servlet 2.x implementation -->
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<scope>${dependency.scopes}</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.inject</groupId>
<artifactId>jersey-hk2</artifactId>
<scope>${dependency.scopes}</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-binding</artifactId>
<scope>${dependency.scopes}</scope>
</dependency>
<!-- Jersey Multipart entity providers support module -->
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<scope>${dependency.scopes}</scope>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-base</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- https://mvnrepository.com/artifact/org.glassfish.jersey.media/jersey-media-json-jackson -->
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<scope>${dependency.scopes}</scope>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-base</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</exclusion>
</exclusions>
</dependency>
提供dependency.scopes的位置。所有依赖项都放在Tomcat的lib文件夹中。我有一些关于依赖关系的问题,但现在我没有看到关于这一点的例外。
NGINX将HTTP和HTTPS后端流量重定向到Tomcat。当我请求使用HTTP时,我得到了正确的响应。当我请求使用HTTPS时,我没有,我得到HTTP 400.相同的URL,相同的请求标头,只是更改协议。
此外,如果我使用来自NGINX服务器的WGET命令请求相同的URL,我会从Tomcat(使用HTTP和HTTPS)获得正确的答案。
因此,Tomcat在两种协议中看起来都很好,但有时候。
tomcat中的任何日志都没有任何异常。当我通过NGINX请求GET时,我只在访问日志中看到HTTP 400代码。
HTTPS Request
- - - [02/Apr/2018:17:02:00 +0000] "GET /request HTTP/1.0" 400 1001 71 https-jsse-nio-8542-exec-4
HTTP Request
- - - [02/Apr/2018:17:29:35 +0000] "GET /request HTTP/1.0" 200 45 16 https-jsse-nio-8542-exec-9
看起来问题是在HTTP标头中产生的,但我无法从tomcat端看到它们。可以启用一些额外的日志记录来获取任何线索吗?
谢谢,
下图显示了tomcat中添加的依赖项:
答案 0 :(得分:0)
我可以修复NGINX配置中的问题,比较HTTP和HTTPS配置。 我有错误的HOST标题。