Mantenga varias barras diagonales y todas las barras diagonales cuando utilice el proxy nginx para apache

Mantenga varias barras diagonales y todas las barras diagonales cuando utilice el proxy nginx para apache

Un poco de historia. Estoy en el proceso de trasladar un sitio web de servidores antiguos con Apache a nuevos servidores Ubuntu con proxy NGINX a Apache. Habrá un período de transición en el que el código base del sitio web se ejecutará tanto en servidores nuevos como antiguos.

El sitio web tiene URL de búsqueda con filtros separados por barras y, a menudo, son opcionales, por ejemplo.

www.ejemplo.com/search/deals/q1/q2/q3/q4/q5/q6/

que se asigna a la siguiente regla de reescritura de apache.conf:

RewriteRule ^/search/deals/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/  /results.php?q1=$1&q2=$2&q3=$3&q4=$4&q5=$5&q6=$6 [L,QSA]

No es inusual tener URL como las siguientes

www.example.com/search/deals/q1////q5/q6/

www.example.com/search/deals/q1/q2/q3///q6/

www.example.com/search/deals/q1/q2/q3/q4///

En el nuevo servidor he configurado NGINX así: dos sitios habilitaron un archivo apache del servidor predeterminado y un archivo example.com

/etc/nginx/sites-enabled/apache -> ../sites-available/apache
/etc/nginx/sites-enabled/example.com -> ../sites-available/example.com

Apache se ve así (IP real reemplazada por 10.10.10.10):

server {
    listen 10.10.10.10:80 default_server;
    merge_slashes off; #have tried with/without

    location / {
        proxy_redirect off; #have tried with/without
        port_in_redirect off; #have tried with/without
        proxy_pass http://10.10.10.10:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

ejemplo.com se ve así

server {
        listen 10.10.10.10:80 ;
        server_name example.com www.example.com;
        root /var/www/live/example.com/frontend/htdocs;
        merge_slashes off;

    location / {
        fastcgi_pass unix:/var/run/php5-fpm.sock; #have tried with/without
        include fastcgi_params; #have tried with/without


        proxy_redirect off; #have tried with/without
        port_in_redirect off; #have tried with/without
        proxy_pass http://10.10.10.10:8080 ;
        proxy_set_header Host             $host;
        proxy_set_header X-Real-IP        $remote_addr;
        proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;#have tried with/without
        proxy_set_header X-Accel-Internal /internal-nginx-static-location; #have tried with/without
        access_log off;
    }

}

Después de realizar cualquier cambio, reinicié NGINX a través de

service nginx restart

Cuando cargo una página, por ejemplo, www.example.com/search/deals/q1/q2////q6/ aparece "archivo no encontrado" y luego miro el registro de Apache con el nivel de registro establecido en 3 y aparece a continuación:

[Wed Oct 07 22:52:10.178436 2015] [rewrite:trace1] [pid 4186:tid 123456789] mod_rewrite.c(468): [client 10.10.10.10:33468] 10.10.10.10 - - [www.example.com/sid#sddsaddsa][rid#sddsaddsa/subreq] pass through /search/deals/q1/q2/q5/

Lo que indica que todas las barras diagonales se han eliminado a través del proxy en algún momento. Pero necesito que la URL permanezca intacta para que la regla de Apache pueda enrutar los parámetros correctamente.

He mirado otras respuestas con títulos similares y ninguna resuelve mi problema, por ejemplo: mantenga barras dobles cuando trabaje con un pasajero

https://stackoverflow.com/questions/4320774/nginx-how-to-keep-double-slashes-in-urls

https://stackoverflow.com/questions/14832780/nginx-merge-slashes-redirect

https://stackoverflow.com/questions/22759345/nginx-trailing-slash-in-proxy-pass-url

https://stackoverflow.com/questions/5834025/how-to-preserve-request-url-with-nginx-proxy-pass

...

Si alguien tiene alguna sugerencia o puede indicarme la dirección correcta, sería genial.

gracias de antemano

información relacionada