Задать вопрос
trampick
@trampick
Веб-разработчик

Как настроить nginx + php fpm для 1c bitrix?

На облачном сервере стоит CloudPanel панель. Там нет apache, только nginx в режиме php fpm. Сайт на 1с битрикс.
Готового конфига для битрикса для этой панели я не нашел. Несколько дней пытаюсь разобраться в чем проблема. C apache на другом сервере сайт работает корректно.

Сам vhost конфиг.
server {
  listen 80;
  listen [::]:80;
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  {{ssl_certificate_key}}
  {{ssl_certificate}}
  server_name testsite.ru;
  {{root}}
  index index.php;

  {{nginx_access_log}}
  {{nginx_error_log}}


  location ~ /.well-known {
    auth_basic off;
    allow all;
  }

  {{settings}}
 

  location / {
   {{varnish_proxy_pass}}

	proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_hide_header X-Varnish;
    proxy_redirect off;
    proxy_max_temp_file_size 0;
    proxy_connect_timeout      720;
    proxy_send_timeout         720;
    proxy_read_timeout         720;
    proxy_buffer_size          128k;
    proxy_buffers              4 256k;
    proxy_busy_buffers_size    256k;
    proxy_temp_file_write_size 256k;

	try_files $uri $uri/ /bitrix/urlrewrite.php$is_args$args; 
    
 }

  location ~* ^.+\.(css|js|jpg|jpeg|gif|png|ico|gz|svg|svgz|ttf|otf|woff|woff2|eot|mp4|ogg|ogv|webm|webp|zip|swf|map)$ {
    add_header Access-Control-Allow-Origin "*";
    expires max;
    access_log off;
  }

  if (-f $request_filename) {
    break;
  }
}

server {
  listen 8080;
  listen [::]:8080;
  server_name testsite.ru;
  {{root}}

  try_files $uri $uri/ /index.php?$args;
  index index.php index.html;

  location ~ \.php$ {
    include fastcgi_params;
    fastcgi_intercept_errors on;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    try_files $uri =404;
    fastcgi_read_timeout 3600;
    fastcgi_send_timeout 3600;
    fastcgi_param HTTPS "on";
    fastcgi_param SERVER_PORT 443;
    fastcgi_pass 127.0.0.1:{{php_fpm_port}};
    fastcgi_param PHP_VALUE "{{php_settings}}";
  }

  if (-f $request_filename) {
    break;
  }
}


Я добавил строчку
try_files $uri $uri/ /bitrix/urlrewrite.php$is_args$args;

остальное по умолчанию.
После этого обработка стала происходить через urlrewrite.php. Но проблема , как мне кажется, в том что urlrewrite.php видит request_uri как "/bitrix/urlrewrite.php" - проверял. А должно как /projects/project_slug - т.е. что в адресной строке браузера.

Помогите, пожалуйста, правильно настроить nginx.
  • Вопрос задан
  • 376 просмотров
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
попробуйте вот это:
try_files $uri $uri/ /bitrix/urlrewrite.php$is_args$args;

заменить на:
try_files $uri $uri/ @bitrix;
И добавить именованный location по образцу PHP-шного:
location @bitrix {
  include fastcgi_params;
  fastcgi_intercept_errors on;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME $document_root/bitrix/urlrewrite.php;
  try_files $uri =404;
  fastcgi_read_timeout 3600;
  fastcgi_send_timeout 3600;
  fastcgi_param HTTPS "on";
  fastcgi_param SERVER_PORT 443;
  fastcgi_pass 127.0.0.1:{{php_fpm_port}};
  fastcgi_param PHP_VALUE "{{php_settings}}";
}

( я это не проверял)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы