J'essaie de mettre en place un reverse proxy en utilisant proxy_pass dans NGINX. La page se charge bien mais toutes les aides statiques (js, css, imgs) qui utilisent des urls relatives se cassent la figure parce qu'elles préfèrent le nom d'hôte du serveur parent. Y a-t-il un moyen d'utiliser un reverse proxy tout en conservant le nom d'hôte du proxy pour toutes les ressources statiques ?
parent.conf
server {
listen 80;
server_name parent.mydomain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name parent.mydomain.com;
root /var/www/parent;
index index.html;
try_files $uri.html $uri $uri/ =404;
# error and access out
error_log /var/log/error.log;
access_log /var/log/access.log;
ssl on;
ssl_certificate /etc/ssl/myssl.pem;
ssl_certificate_key /etc/ssl/myssl-key.pem;
# Here is the important part. Any url matching
# this pattern needs to proxy_pass to child.
location ~ "^/[a-z0-9]{24}$" {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass https://child.mydomain.com;
proxy_redirect off;
}
}
child.conf
server {
listen 80;
server_name child.mydomain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443;
server_name child.mydomain.com;
root /var/www/child;
ssl on;
ssl_certificate /etc/ssl/myssl.pem;
ssl_certificate_key /etc/ssl/myssl-key.pem;
error_log /var/log/child.log;
access_log /var/log/child.log;
# this is a single page app so all request
# should be routed through index.html.
location / {
try_files $uri /index.html;
}
}
Maintenant, si j'appuie sur https://parent.mydomain.com/54570f77968d6e492b0d68af
la page d'index de child.mydomain.com
se charge bien mais aucun de mes fichiers statiques ne le fait puisqu'ils essaient de se charger sous https://parent.mydomain.com
au lieu de l'endroit où ils se trouvent réellement https://child.mydomain.com/js/main.js
.