www.state-it.info

Gran base de respuestas a las preguntas de los desarrolladores
Header decor

La expresión regular location nginx?

nikitasius 2011-04-17 23:46:14

Buenas tardes, ya de 2 3 días apuesto sobre el problema,
location ~* ^/.+\.(php)$ { — regular la expresión de configuración de nginx, que nos dice que si el archivo solicitado *.php, este location cumple.


Delante de mí hay una tarea: hacer location exclusiva en php. Es decir, si en una consulta de php, location se procesa.


La variante ~* .+(!?php)$ de el nginx no pasa (él persiste en solicitar estática con апача, al parecer regexp allí es especial..). ~* — en nginx significa, sin distinción entre mayúsculas y minúsculas.


Hay una opción ~* ^(.+?)[^/.php]$, pero no se cumple humano enlaces del tipo/link2/link3, pero funciona/link2/link3/ (al final de la cuesta a barra). Y hay que reemplazar en otros location (ubicación de los archivos .h, .p, .ph, .hp, .*ph y .*php.


Por favor, ayudar a crear fiel location y dirigir mi nginx en el verdadero camino.


Si la opción 1 no realizamos, las 2 location crear, dada la especificidad de nginx?


nginx con оффсайта, descargar el código fuente, configurados bajo la necesita make && make install.
submodsubstitutions4nginx mod de este topeka.

nginx -V

nginx version: nginx/0.8.54<br/>
built by gcc 4.4.5 (Debian 4.4.5-8)<br/>
TLS SNI support enabled<br/>
configure arguments: --with-http_ssl_module --with-pcre --with-http_dav_module --with-http_realip_module --with-http_stub_status_module --with-http_sub_module --with-http_addition_module --add-module=/usr/udata/nginx-0.8.54/submod

zvirusz 2011-04-18 00:14:41

y lo que deseas en este локейшене escribir?


nikitasius 2011-04-18 00:23:25

root [ruta a la carpeta donde se encuentran los archivos de proyecto];
así como el php y la estática se encuentran en un solo lugar — es necesario para nginx no dio como estática archivo php.


nikitasius 2011-04-18 00:55:27

1) Apache se ejecuta en el puerto de 818x oculta al mundo exterior.
2) Todo el procesamiento se realiza a través del puerto 80 (y 443) donde cuelga nginx.
3) los archivos Dinámicos se encuentran, junto con la estáticas.
4) Apache debe recibir las solicitudes tipo /anyname.php y /anyname.php?q=.. /anyname/anylink y /anyname/anylink/
Al hacerlo, /anyname.php/link1 o /anyname.php/link1/porque van en Apache.


nikitasius 2011-04-20 00:35:13

La idea misma de la cuestión: excluye location.
No debe determinar если PHP то:, a hacer si НЕ PHP, то...
Entonces configuración estándar
location / — en apache
location {si no de PHP} — de la carpeta de proyecto


Total answers: 4

iSage 2011-04-18 00:22:03

Si he entendido lo que quieres, entonces eso es: dar todo lo que no es de php directamente.

server {
    ...
    index index.php;
    ...
    location ~ ^.*\.php
    {
        ...
    }
    root /path/to/your/static/files/;
}

nikitasius 2011-04-18 00:42:12

En su caso, index.php.jpg engaña el servidor y la consulta va en la dinámica de la (anyname.php*).
De la misma manera si en la consulta se index.php sin parámetros, pero el servidor recibe el archivo php.

En cuanto a configuración: location ~ ^.*\.php {nginx para conectarse a apache como proxy}
root /path/to/your/static/files/ — aquí se muestra la ruta de la carpeta donde se encuentra y de la estática y la dinámica. Deben estar juntos (como usuario de ftp en el servidor subido).


iSage 2011-04-18 00:52:55

1) location ~ ^.*\.php$
2) nada que no se entiende. pero esta es la opción para los vertederos de la estática y la dinámica.


nikitasius 2011-04-18 01:05:30

Ahora todo ha sido excelente, sólo referencias /joomla/index.php/getting-started se procesan nginx. (loge failed (20: Not a directory)) (o /2011/04/17 y /2011/04/17/)

He aquí el pedazo de configuración
...
index index.php;
location ~ ^.*\.php$ {
proxy_pass localhost:8184;
include param/zone6rs;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffer_size 512k;
proxy_buffers 32 512k;
proxy_busy_buffers_size 512k;
proxy_temp_file_write_size 512k;
#include param/prx_c20_s20_r30;
proxy_connect_timeout 120;
proxy_send_timeout 100;
proxy_read_timeout 100;
# index index.php;
proxy_cache off;

}
location ~ ^ {
root /usr/webusers/wwwnikitas/www/;
include param/zone12rs;
}

Si en vez de location ~ ^ { dejar simplemente root — el efecto es el mismo.


zvirusz 2011-04-18 01:35:43

    location / {
        if ( !-e $request_filename ) {
            rewrite ^(.*)$ /index.php last;
        }
    }

перенаправляем todas las solicitudes inexistentes archivos\carpeta en index.php


frol 2011-04-18 00:18:26

Solución 1. Yo por supuesto entiendo que en php quieren culpar del código fuente y estática en un montón, pero te aconsejo que simplemente soportar toda la estática en la misma carpeta /static/ y será a través de nginx tranquilamente dar todas las url de tu que comienzan con /static/ como estática, y el resto en php.
Solución 2. En nginx локейшины con regexp se ejecutan de forma secuencial, por lo tanto, se puede escribir:
location ~* \.php$ {
...
}
location ~ ^ {
root /project/;
}
Todo lo que no pasará de la primera condición va más allá.

nikitasius 2011-04-18 00:49:18

En su caso, no se procesan los enlaces del tipo /link2/link3 y /link2/link3/


niakrisn 2011-04-20 12:46:14

Si la tarea es para php enviar en el backend y estática dar con la rom, funciona try_files:

location / {
try_files $uri $uri/ @php;
}

location @php {
...
}

nikitasius 2011-04-20 22:06:23

en el caso de la configuración

location / {
try_files $uri $uri/ @php;
}

location @php {
proxy_pass apache;
}


los archivos se leen апачем y nginx sus emite.

En el caso de la opción

root путь к проекту;
location / {
try_files $uri $uri/ @php;
}

location @php {
proxy_pass apache;
}

Apache procesa todos los 404 y toda la dinámica, estática de la misma en buen estado, se emite nginx.
Pero los enlaces del tipo /mysite o /mysite/ dan 403 del nginx.
directory index of "/полный путь к папке/" is forbidden

En cualquier caso, gracias por la idea. Tratar de combinar todas las opciones.


nikitasius 2011-04-20 22:08:50

agregó index index.php; en server{ referencia ganado. dejo como opción + la voy a revisar.
Gracias.


nikitasius 2011-04-20 22:11:15

y aún, además de solicitudes directas en php se procesan апачем sólo con la condición de location ~ \.php$ {que, de lo contrario nginx manda el archivo.


iSage 2011-04-18 01:10:08


location / {
    try_files $uri $uri/ /index.php?q=$request_uri;
}

wiki.nginx.org/Joomla

nikitasius 2011-04-18 01:25:32

Todas las solicitudes de estática van directamente a apache (si como en la instrucción de enlace de implementar).


Preguntas relacionadas:

Footer decor

© www.state-it.info | Base of answers to questions for developers and programmers.