Prop贸sito: Proporcionar la configuraci贸n del servidor virtual Nginx para la operaci贸n de Bitrix-cms en el paquete Nginx + PHP-FPM. Lo cual, entre otras cosas, tambi茅n es adecuado para el paquete Nginx + Apache2, con modificaciones menores.
P煤blico objetivo: administradores del servidor, administradores avanzados del sitio, programadores.
Hay suficientes art铆culos sobre este tema, pero si los mira como no oficiales, generalmente contienen errores, y los oficiales est谩n llenos de errores que no es aconsejable usar en Nginx. Espero que despu茅s de publicar esta configuraci贸n, el paquete Nginx + PHP-FPM se vuelva m谩s serio.
Aqu铆 est谩 la configuraci贸n oficial para que el cach茅 compuesto funcione a trav茅s de nginx.Mostrar茅 la implementaci贸n del retorno de la memoria cach茅 compuesta del archivo. En general, el retorno con memcached se realiza por analog铆a. En la configuraci贸n de retorno de la memoria cach茅 de archivos, cont茅 11 si, de lo cual me deshac铆 al rehacerlos en el mapa.
Comenzar茅 con una versi贸n simplificada del CNC para aquellos que solo necesitan un mont贸n de Nginx + PHP-FPM sin devolver el cach茅 compuesto a trav茅s de Nginx. Se entiende que la secci贸n del servidor ya est谩 configurada, con nombres de dominio y env铆o a php-fpm.
location / { try_files $uri $uri/ /bitrix/urlrewrite.php$is_args$args; }
No es sorprendente cuando mira esos lienzos que se me ocurrieron, esto es suficiente para que Bitrix funcione correctamente. Si necesita una redirecci贸n de index.php e index.html a sin, entonces todav铆a necesita agregar esta l铆nea:
if ($request_uri ~ ^(.*)/index.(html|php)) { return 301 $1/$is_args$args; }
Desafortunadamente, no hay un reemplazo digno si. Pero esta l铆nea funciona sin crear problemas.
Ejemplo de configuraci贸n minimalista server { listen 80; server_name site.ru; root /var/www/site.ru/; index index.php; location ~ \.php$ { include /etc/nginx/fastcgi_params; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_intercept_errors on; } if ($request_uri ~ ^(.*)/index.(html|php)) { return 301 $1/$is_args$args; } location / { try_files $uri $uri/ /bitrix/urlrewrite.php$is_args$args; } location ~* @.*\.html$ { internal; } }
Quiero enfatizar que esta es una configuraci贸n minimalista sin reglas de est谩tica, compresi贸n, y all铆 cubr铆 solo los archivos de cach茅 compuestos de acceso directo. La configuraci贸n que cubre ciertos lugares desde el acceso directo a trav茅s de nginx es bastante individual. Tengo este kit que podr铆a adaptarse a alguien. Pero debes usarlo con cuidado y conciencia. Tenga en cuenta que ingresar datos de ubicaci贸n en su configuraci贸n puede provocar la inoperancia del sitio o parte de sus funciones.
Un fragmento de la configuraci贸n que bloquea el acceso a los archivos que deber铆a estar disponible solo cuando se accede desde PHP location ~ \.php$ { location ~* /\.\./ { internal; } location ~ /\.[^/]+$ { internal; } location ~* ^/upload/1c_[^/]+/ { internal; } location ~* ^/(bitrix/(cache|images|tmp)|upload)/ { internal; } location ~* ^/bitrix/(footer|header|license_key)\.php$ { internal; } location ~* ^/(bitrix|local)/components/(.*)/(.*)/(class|component)\.php$ { internal; } location ~* ^/(bitrix|local)/(backup|blocks|bx_cloud_upload|local_cache|module|modules|managed_cache|php_interface|public|stack_cache)/ { internal; } include /etc/nginx/fastcgi_params; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_intercept_errors on; } location ~* \.(hg|svn|git|bzr)$ { internal; } location ~* /\.\./ { internal; } location ~* @.*\.html$ { internal; } location / { location ~* ^/(bitrix|local)/(backup|blocks|bx_cloud_upload|local_cache|module|modules|managed_cache|php_interface|public|services|stack_cache)/ { internal; } location ~ /\.[^/]+$ { internal; } location ~* ^/upload/1c_[^/]+/ { internal; } try_files $uri $uri/ /bitrix/urlrewrite.php$is_args$args; }
Y, por supuesto, el ejemplo de ubicaci贸n para archivos est谩ticos.
location ~* \.(jpg|jpeg|png|tiff|gif|webp|xml|html|yml|ogg|ogv|svg|svgz|eot|otf|woff|woff2|mp4|ttf|rss|atom|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|rtf|pdf|txt|js|css|bmp|pnm|pbm|ppm)$ { access_log off; expires 97d; }
Ahora pasemos a la configuraci贸n para que el compuesto funcione con el retorno de los archivos de cach茅 a trav茅s de nginx. En primer lugar, es necesario determinar si es posible asignar el cach茅 compuesto a esta solicitud o si debe enviarse para su procesamiento a trav茅s de php. Para hacer esto, en Nginx, en la secci贸n http, agregue algunos mapas, as铆 como varias directivas:
modern_browser_value "modern"; modern_browser msie 10.0; modern_browser unlisted; map "$cookie_BITRIX_SM_LOGIN:$cookie_BITRIX_SM_UIDH:$cookie_BITRIX_SM_CC" $storedAuth { default ""; "~*:*:Y" ""; "~*:*:*" 1; "~*:*:" 1; } map "$request_method:$http_bx_action_type:$cookie_BITRIX_SM_NCC:$http_x_forwarded_scheme:$modern_browser:$storedAuth" $usecache { default "1"; "~GET:::*https*" "1"; "~GET:::*:*:" ""; }
A continuaci贸n, escribimos directamente en la secci贸n del servidor
set $i "index@"; location / { try_files /bitrix/html_pages/$host$uri$i${args}.html$usecache /bitrix/html_pages/$host$uri$i${args}=.html$usecache /bitrix/html_pages/$host$uri/$i${args}.html$usecache /bitrix/html_pages/$host$uri/$i${args}=.html$usecache $uri $uri/ /bitrix/urlrewrite.php$is_args$args; }
Bueno, para entender c贸mo se ver谩 aproximadamente la configuraci贸n m铆nima de la secci贸n del servidor
Ejemplo de una configuraci贸n minimalista con el retorno de la cach茅 compuesta del archivo a trav茅s de nginx server { listen 80; server_name site.ru; root /var/www/site.ru/; index index.php; location ~ \.php$ { include /etc/nginx/fastcgi_params; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_intercept_errors on; } if ($request_uri ~ ^(.*)/index.(html|php)) { return 301 $1/$is_args$args; } set $i "index@"; location / { try_files /bitrix/html_pages/$host$uri$i${args}.html$usecache /bitrix/html_pages/$host$uri$i${args}=.html$usecache /bitrix/html_pages/$host$uri/$i${args}.html$usecache /bitrix/html_pages/$host$uri/$i${args}=.html$usecache $uri $uri/ /bitrix/urlrewrite.php$is_args$args; } location ~* @.*\.html$ { internal; } }
Estar茅 encantado de preguntas y sugerencias con respecto a esta configuraci贸n, as铆 como de alegr铆a, ver茅 sus logros.