3 votes

Nginx - proxy inverse vers une installation Worpress distante

J'ai un Serveur-a qui ne contient qu'un Nginx et une application node en exécution.

Cependant, je veux servir l'application Node à partir de ce serveur, qui sert également une application Angular.

Mais lorsque je navigue vers serveur-a/blog Je veux faire un reverse proxy (proxy interne) vers un autre serveur (Server-b), qui contient une installation Wordpress, également avec un Nginx.

Donc, je navigue toujours vers serveur-a/blog , sert le contenu de la serveur-b

Je l'ai fait fonctionner partiellement avec cette configuration :

    proxy_buffering on;
    proxy_buffer_size 1k;
    proxy_buffers 24 4k;
    proxy_busy_buffers_size 8k;
    proxy_max_temp_file_size 2048m;
    proxy_temp_file_write_size 32k;

    location /blog/en/ {
        try_files $uri @proxy;
    }

    location @proxy {
        proxy_redirect off;
        proxy_set_header X-Forwarded-Host "$host";
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://server-b;
    }

Mais ce qui se passe est : Si je navigue vers serveur-a/blog/wp-admin j'obtiens une redirection instantanée vers serveur-a/wp-admin .

Tous les liens relatifs sur l'installation de Wordpress doivent correspondre à l'URL du serveur.

C'est la configuration que j'ai sur ma base de données Wordpress :

    +-----------+-------------+-----------------------+----------+
    | option_id | option_name | option_value          | autoload |
    +-----------+-------------+-----------------------+----------+
    |         1 | siteurl     | http://server-a/blog/ | yes      |
    |         2 | home        | http://server-a/blog/ | yes      |
    +-----------+-------------+-----------------------+----------+

0voto

Andrew Hendrix Points 196

Cela est presque certainement dû aux différents types d'urls relatives.

Selon http://www.webreference.com/html/tutorial2/3.html

Un répertoire appelé (deux points) dans une URL relative indique le répertoire parent, en supprimant essentiellement tout ce qui se trouve jusqu'à la barre oblique précédente dans l'URI de base. Notez que cela n'a de sens qu'à l'intérieur du nom de chemin, vous ne pouvez donc pas utiliser cette notation pour remonter plus haut que le répertoire racine.

Un répertoire appelé . (un point) fait référence au répertoire courant.

Une URL relative qui commence par / (une barre oblique) remplace toujours le nom de chemin complet de l'URL de base.

Une URL relative qui commence par // (deux barres obliques) remplace toujours tout à partir du nom d'hôte.

Ainsi, une url relative qui contient "/wp-admin" remplacera toute la base, comme vous le constatez. Vous voulez qu'elle soit remplacée par "./wp-admin" afin de ne pas réécrire l'ensemble de la base.

Pour ce qui est de le modifier, je ne suis pas sûr, mais je pense que vous devrez le faire du côté de Wordpress.

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