Osticket nginx, php-fpm ajax 400 error, пустое белое окошко)

osticket

При попытке закрытия тикета из dashboard в тикет системе Osticket, появлялось просто пустое белое окошко, текста в нем не было, в access log nginx выглядело это примерно так:

[25/Jun/2015:09:42:48 +0200] "GET /scp/ajax.php/tickets/status/close/3?count=1&_uid=1435218167799 HTTP/1.1" 400 17 "http://tickets.vpn21.com/scp/tickets.php" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36"

при этом error log был чист аки слеза 🙂
Путем гугления, выяснилось, что для данной тикет системы, необходим еще PATH_INFO параметр fastcgi, пример конфига, с добавленными параметрами:

server {
	listen 80 default_server;
	listen [::]:80 default_server ipv6only=on;
	server_name _;
access_log /var/log/nginx/ost-access.log;
error_log /var/log/nginx/ost-error.log;

	 keepalive_timeout 70;

        root /var/www/html;
        index index.php;

        set $path_info "";

        location ~ /include {
            deny all;
            return 403;
        }

     # Requests to /api/* need their PATH_INFO set.
        if ($request_uri ~ "^/api(/[^\?]+)") {
            set $path_info $1;
        }

        # /api/*.* should be handled by /api/http.php if the requested file does not exist
        location ~ ^/api/(?:tickets|tasks).*$ {
            try_files $uri $uri/ /api/http.php?$query_string;
        }

        # ajax.php needs PATH_INFO too (possibly more files need it hence the .*\.php)
        if ($request_uri ~ "^/scp/.*\.php(/[^\?]+)") {
            set $path_info $1;
        }
        if ($request_uri ~ "^/.*\.php(/[^\?]+)") {
            set $path_info $1;
        }

        # Make sure requests to ajax.php/some/path get handled
        location ~ ^/scp/ajax.php/.*$ {
            try_files $uri $uri/ /scp/ajax.php?$query_string;
        }
        location ~ ^/ajax.php/.*$ {
                try_files $uri $uri/ /ajax.php?$query_string;
        }
        location ~ \.php$ {
#           fastcgi_split_path_info ^(.+\.php)(/.+)$;
           try_files $uri =404;
           fastcgi_pass unix:/var/run/php5-fpm.sock;
           fastcgi_index index.php;
           fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
           fastcgi_param  SCRIPT_NAME    $fastcgi_script_name;
           fastcgi_param  PATH_INFO     $path_info;
           include fastcgi_params;
	}
}

Поделись с друзьями:

Опубликовано 25.06.2015 в 07:59 · Автор komivlad · Ссылка
Рубрики: ArchLinux, CentOS, Debain, Fedora, FreeBSD, Linux Mint, Raspberry Pi, Ubuntu · Теги: , , , , , , , ,

6 комментариев

Подписаться на комментарии по RSS

  1. Написал(-а) Dmitry
    07.11.2018 в 03:50
    Ответить · Ссылка

    Были пустые белые окошки.

    С помощью данной инструкции проблема решена.

    Странно что в инструкции с офиц. сайта не пишут настройку nginx.

    Теперь осталось решить проблему с почтой. Писма улетают в спам.

    Можно ли добавить авторизацию почты?

    Настроек пока не нашел.

    • Написал(-а) komivlad
      07.11.2018 в 05:50
      Ответить · Ссылка

      в админ панели тикет системы, перейди во вкладку Emails, выбери свой, с которого идут уведомления и поправь настройки авторизации, и включи отправку почты через smtp

      для яндекса, настройка будет выглядеть так:

      i.your-admin.pro/i/2018/1...b9617590a006.png

  2. Написал(-а) Yaroslav
    30.08.2018 в 19:12
    Ответить · Ссылка

    Оооо! Буквально слёзы благодарности навернулись на глаза. Спасибо большое тебе за подсказку, добрый человек. Сам бы про fastcgi_param PATH_INFO никогда не догадался. Теперь всё полноценно заработало.

  3. Написал(-а) Leman
    26.02.2018 в 08:08
    Ответить · Ссылка

    Спасибо. Вот мо

    server {

    listen 80;

    server_name helpdesk.inet;

    index index.php index.html index.htm;

    root /var/www/html/osticket/upload/;

    access_log /var/log/nginx/access.log;

    error_log /var/log/nginx/error.log;

    client_max_body_size 2000M;

    client_body_buffer_size 100M;

    client_header_buffer_size 10M;

    large_client_header_buffers 2 10M;

    client_body_timeout 12;

    client_header_timeout 12;

    keepalive_timeout 15;

    send_timeout 10;

    gzip on;

    gzip_comp_level 2;

    gzip_min_length 1000;

    gzip_proxied expired no-cache no-store private auth;

    gzip_types text/plain application/x-javascript text/xml text/css application/xml;

    set $path_info "";

    location ~ /include {

    deny all;

    return 403;

    }

    # Requests to /api/* need their PATH_INFO set.

    if ($request_uri ~ «^/api (/[^\?]+)») {

    set $path_info $1;

    }

    # /api/*.* should be handled by /api/http.php if the requested file does not exist

    location ~ ^/api/(?:tickets|tasks).*$ {

    try_files $uri $uri/ /api/http.php?$query_string;

    }

    # ajax.php needs PATH_INFO too (possibly more files need it hence the .*\.php)

    if ($request_uri ~ «^/scp/.*\.php (/[^\?]+)») {

    set $path_info $1;

    }

    if ($request_uri ~ «^/.*\.php (/[^\?]+)») {

    set $path_info $1;

    }

    # Make sure requests to ajax.php/some/path get handled

    location ~ ^/scp/ajax.php/.*$ {

    try_files $uri $uri/ /scp/ajax.php?$query_string;

    }

    location ~ ^/ajax.php/.*$ {

    try_files $uri $uri/ /ajax.php?$query_string;

    }

    location ~ \.php$ {

    # fastcgi_split_path_info ^(.+\.php)(/.+)$;

    try_files $uri =404;

    fastcgi_pass unix:/run/php/php7.0-fpm.sock;

    fastcgi_index index.php;

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

    fastcgi_param SCRIPT_NAME $fastcgi_script_name;

    fastcgi_param PATH_INFO $path_info;

    include fastcgi_params;

    }

    }

Подписаться на комментарии по RSS

Написать комментарий