PHP с nginx в комплекте с gitlab не работает

Я установил gitlab с помощью пакета omnibus в CentOS 7. Я хотел бы использовать сервер gitlab для размещения дополнительных веб-сайтов. Я включил пользовательскую конфигурацию nginx, добавив приведенный ниже код в /etc/gitlab/gitlab.rb

nginx['custom_nginx_config'] = "include /etc/nginx/conf.d/*.conf;"

Я также создал файлы conf в /etc/nginc/conf.d. Статические HTML-файлы работают, но когда я пытаюсь запустить php-скрипты, я получаю сообщение об ошибке «Файл не найден - 404».

Ниже приведена конфигурация nginx для php:

server{
    listen 80;
    server_name example.com;
    root /var/www/vhosts/example;
    index index.php index.html index.htm;
    location / {
        try_files $uri $uri/ =404;
    }
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /opt/gitlab/embedded/html;
    }

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        include /opt/gitlab/embedded/conf/fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

    }

}

Ниже приводится журнал ошибок:

FastCGI отправлен в stderr: «Первичный сценарий неизвестен» при чтении ответа от восходящего потока, клиента xxxx, сервера: example.com, запроса: «GET / HTTP / 1.1», восходящего потока: «fastcgi: //127.0.0.1: 9000», хоста : "example.com"


person wdphd    schedule 29.06.2015    source источник


Ответы (1)


Возможно, ваша проблема связана с вашей конфигурацией "location ~ .php $".

Вы уже исправили первую проблему с gitlab omnibus, включив правильный fatscgi_params вместо значения по умолчанию. Теперь это похоже на конфигурацию местоположения.

Попробуйте следующий код для своей конфигурации:

location ~ \.php$ {
   #in your case maybe : /opt/gitlab/embedded/html
   root  [YOUR APP DIRECTORY]; 

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

   fastcgi_param PATH_INFO $fastcgi_path_info;
   fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

   fastcgi_pass 127.0.0.1:9000;
   fastcgi_index index.php;
   fastcgi_split_path_info ^(.+\.php)(/.+)$;
   fastcgi_intercept_errors on;

   include /opt/gitlab/embedded/conf/fastcgi_params;
}

У меня это исправление работает на сервере Debian 8.

Надеюсь, это поможет.

person Yoann Vié    schedule 13.01.2017