Spring HATEOAS ResourceSupport génère des URL incorrectes dans ses réponses. J'utilise Tomcat avec Spring et NGINX comme proxy inverse.nginx proxy inverse + Spring ResourceSupport produit préfixe chemin URL mal
Spring généré URL: http://localhost:8080/spring-ng-seed
URL du projet: https://spring-ng-seed.dev/
(sert du contenu statique),
Web URL API: https://spring-ng-seed.dev/wapi/
Toutes les demandes de /wapi/
excellent travail mais ResourceSupport de printemps HATEOAS génère urls que ressembler à: https://spring-ng-seed.dev/spring-ng-seed/foo/bar
au lieu de https://spring-ng-seed.dev/wapi/foo/bar
Par exemple, une auto rel quand nous appelons https://spring-ng-seed.dev/wapi/foo/bar
nous nous retrouvons avec https://spring-ng-seed.dev/spring-ng-seed/foo/bar
revenir comme auto rel qui est incorrect.
/spring-ng-seed/foo/bar
devrait être /wapi/foo/bar
dans les liens de réponse.
Je ne sais pas ce qui est mal configuré, nginx, tomcat ou au printemps, mais je ne trouve rien sur nulle part ailleurs.
J'utilise aussi AngularJS sur l'avant, mais je doute que le problème pose à l'avant, mais plutôt avec nginx comme proxy inverse ou tomcat.
Quelqu'un peut-il vous aider s'il vous plaît?
NGINX Config:
server {
charset UTF-8;
listen 80;
listen 443 ssl;
server_name www.spring-ng-seed.dev spring-ng-seed.dev;
ssl on;
ssl_certificate /Users/reecefowell/Projects/Spring/spring-ng-seed/cert.pem; # path to your cacert.pem
ssl_certificate_key /Users/reecefowell/Projects/Spring/spring-ng-seed/server.key; # path to your privkey.pem
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location /wapi/ {
proxy_pass http://localhost:8080/spring-ng-seed/;
proxy_read_timeout 90;
proxy_connect_timeout 90;
# proxy_ssl_session_reuse off;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Prefix $http_x_forwarded_prefix;
proxy_set_header X-Forwarded-Host $http_x_forwarded_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_set_header X-Forwarded-Protocol https;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Url-Scheme https;
}
location/{
root /Users/reecefowell/Projects/Spring/spring-ng-seed/src/main/webapp/app/build;
index index.html;
}
}
Mon Tomcat est configuré via mon fichier pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<packaging>war</packaging>
<groupId>spring-ng-seed</groupId>
<artifactId>spring-ng-seed</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>4.0.5.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.hateoas</groupId>
<artifactId>spring-hateoas</artifactId>
<version>0.12.0.RELEASE</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.0</version>
</dependency>
...
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<!--<configuration>-->
<!--<url>http://localhost:8080/manager</url>-->
<!--<server>localhost</server>-->
<!--</configuration>-->
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
</plugin>
</plugins>
</build>
</project>
Je l'ai fait que vous avez demandé, et je l'ai changé la configuration suivante: 'proxy_set_header X-Forwarded-prefix/WAPI,' Aucun effet. j'ai vérifié la sortie des têtes reçus à Springs 'HttpServletRequest' et ce que j'ai trouvé: ' Hôte: "spring-ng-seed.dev" '' X-Real-IP: "127.0.0.1" ' ' X-Forwarded-Proto: "https" ' ' X-Forwarded-préfixe: "/ wapi" ' ' X-Forwarded-Host: null' 'X-Forwarded-Pour:" 127.0.0.1 "' 'X-NginX-Proxy: true' Des pensées? Merci. –
Support pour 'X-Forwarded-Prefix' n'a été [ajouté au printemps 4.1.3] (https://github.com/spring-projects/spring-framework/commit/7f11c1ee2f802b3a2a5b821c821b15c6705dc085), en fonction de votre POM il semble que vous êtes en utilisant Spring 4.0.5? –