1 votes

nginx proxy domain to url, affiche l'ancien domaine

J'ai deux sous-domaines que je veux lier de la manière suivante : https://suba.example.org/ est mon sous-domaine principal, https://subb.example.org/ est mon sous-domaine secondaire. Sur suba, j'ai un serveur qui exécute une application web, subb ne sert qu'à la redirection. Ce serveur sur suba a une url, appelons-la https://suba.example.org/foo.php/bar .

Tout ce que je veux, c'est qu'à chaque fois que je tape https://subb.example.org/ dans mon navigateur, le contenu de https://suba.example.org/foo.php/bar est affichée, mais l'URL doit indiquer https://subb.example.org/ .

Pour l'instant, il affiche correctement le contenu de https://suba.example.org/foo.php/bar mais le navigateur affichera l'URL du contenu et non pas https://subb.example.org/ . J'ai redémarré le serveur nginx plusieurs fois et j'ai utilisé une fenêtre incognito, pour être sûr que le navigateur ne met pas de données en cache.

Ce qui se passe, c'est que

  • J'ouvre https://subb.example.org/ sur une fenêtre incognito de Chrome sur mon bureau : il affichera la sortie correcte de https://suba.example.org/foo.php/bar , mais montrant https://suba.example.org/foo.php/bar dans la barre d'URL
  • J'ouvre https://subb.example.org/ sur tout autre navigateur/machine (y compris une fenêtre incognito de Chrome sur une autre machine) : il affichera le contenu de https://suba.example.org/foo.php/bar avec https://subb.example.org Barre URL, mais seulement le texte, pas de css ni d'image. Comme un site web des années 80.

Juste avant de cliquer sur "Entrée" : https://i.stack.imgur.com/Q5mgx.png

Ce qu'il faut faire est se produire : https://i.stack.imgur.com/CfHM1.png

Ce qu'il faut faire debe se produire : https://i.stack.imgur.com/5OxQ4.png

Toute aide est la bienvenue.

Vous trouverez ci-joint la configuration de mon site nginx pour subb :

server {
listen 443 ssl;

root /config/www;
index index.html index.htm index.php;

### Server Name
server_name subb.example.org;

### SSL Certificates
ssl_certificate /config/keys/letsencrypt/fullchain.pem;
ssl_certificate_key /config/keys/letsencrypt/privkey.pem;

### Diffie–Hellman key exchange
ssl_dhparam /config/nginx/dhparams.pem;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';

### Extra Settings
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;

### Add HTTP Strict Transport Security
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
add_header Front-End-Https on;

client_max_body_size 0;

location / {
proxy_pass https://suba.example.org/foo.php/bar;
}
}

Voici la configuration du site nginx pour suba :

server {
listen 443 ssl;

root /config/www;
index index.html index.htm index.php;

### Server Name
server_name suba.example.org;

### SSL Certificates
ssl_certificate /config/keys/letsencrypt/fullchain.pem;
ssl_certificate_key /config/keys/letsencrypt/privkey.pem;

### Diffie–Hellman key exchange
ssl_dhparam /config/nginx/dhparams.pem;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';

### Extra Settings
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;

### Add HTTP Strict Transport Security
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
add_header Front-End-Https on;

client_max_body_size 0;

location / {
proxy_pass https://192.168.178.6:444/;
}
}

Et voici la réponse pour curl -i https://subb.example.org :

HTTP/1.1 200 OK
Server: nginx/1.12.1
Date: Mon, 07 Aug 2017 19:24:03 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 11185
Connection: keep-alive
X-Powered-By: PHP/7.1.5
Set-Cookie: oc367h1rrnkw=i7l0tko9m9unbifqus6lqua1v2; path=/; HttpOnly
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Pragma: no-cache
Set-Cookie: oc_sessionPassphrase=eFmSS9gKBYJ4YP0MHDFhmxnhJZnmWTDAMjN4zkTrEenumTa66yy6SeWCs12oU2k2MbDN424ySgGeyyYbciCK7Fs3gmmjtwAJU3a3r87BXZ1Uk%2FmdLEXuZoFdy4mbPH67; path=/; secure; HttpOnly
X-Frame-Options: SAMEORIGIN
Set-Cookie: __Host-nc_sameSiteCookielax=true; path=/; httponly;secure; expires=Fri, 31-Dec-2100 23:59:59 GMT; SameSite=lax
Set-Cookie: __Host-nc_sameSiteCookiestrict=true; path=/; httponly;secure; expires=Fri, 31-Dec-2100 23:59:59 GMT; SameSite=strict
Cache-Control: no-cache, no-store, must-revalidate
Content-Security-Policy: default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self' 'unsafe-eval';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self';connect-src 'self';media-src 'self';frame-src 'self'
Strict-Transport-Security: max-age=15768000; includeSubDomains; preload;
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
X-Robots-Tag: none
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Strict-Transport-Security: max-age=63072000; includeSubdomains
Front-End-Https: on
Strict-Transport-Security: max-age=63072000; includeSubdomains
Front-End-Https: on

J'ai collé la sortie du Live HTTP Header Plugin dans pastbin : pastebin.com/a6kfqhMn

0voto

qrest Points 246

La solution a consisté à rediriger les demandes de css, de graphiques, etc. vers https://suba.example.org . Ainsi, mon nouveau site-config pour https://subb.example.org est le suivant :

server {
listen 443 ssl;

root /config/www;
index index.html index.htm index.php;

### Server Name
server_name https://subb.exmaple.org;

### SSL Certificates
ssl_certificate /config/keys/letsencrypt/fullchain.pem;
ssl_certificate_key /config/keys/letsencrypt/privkey.pem;

### Diffie–Hellman key exchange
ssl_dhparam /config/nginx/dhparams.pem;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';

### Extra Settings
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;

### Add HTTP Strict Transport Security
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
add_header Front-End-Https on;

client_max_body_size 0;

location ^~ /core/ {
proxy_pass https://suba.exmaple.org;
}

location ^~ /apps/ {
proxy_pass https://suba.exmaple.org;
}

location ^~ /index.php/ {
proxy_pass https://suba.exmaple.org;
}

location / {
proxy_pass https://suba.exmaple.org/foo.php/bar;
}
}

Ici, la partie avec location ^~ ... est ce qui manquait. Je sais que ce n'est pas la meilleure pratique, car j'ai dû parcourir tout le code source pour trouver ce qui manquait et ce que je devais rediriger. Peut-être qu'un jour quelqu'un lira ces lignes et m'indiquera une meilleure façon de rediriger le contenu réel du serveur web. Mais en attendant, cette solution fonctionnera.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X