泽西响应HTTP 400 Bad Requests,没有任何线索方式

时间:2018-04-02 17:45:12

标签: java tomcat nginx jersey http-status-code-400

我有一个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中添加的依赖项:

enter image description here

1 个答案:

答案 0 :(得分:0)

我可以修复NGINX配置中的问题,比较HTTP和HTTPS配置。 我有错误的HOST标题。