2

我已经在 CentOS 7 上使用综合包设置了 gitlab。我想使用 gitlab 服务器来托管其他网站。我通过将以下代码添加到 /etc/gitlab/gitlab.rb 来启用自定义 nginx conf

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

我还在 /etc/nginc/conf.d 中创建了 conf 文件。静态 HTML 文件正在工作,但是当我尝试运行 php 脚本时,我得到一个 File not found - 404 错误。

以下是 php 的 nginx 配置文件:

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 在标准错误中发送:“主脚本未知”,同时从上游读取响应,客户端 xxxx,服务器:example.com,请求:“GET / HTTP/1.1”,上游:“fastcgi://127.0.0.1:9000”,主机:“example.com”

4

1 回答 1

2

也许您的问题来自您的“位置〜.php$”配置。

您已经通过包含正确的 fatscgi_params 而不是默认值来解决 gitlab 综合的第一个问题。现在它似乎来自位置配置。

为您的配置尝试以下代码:

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 服务器上。

希望它可以帮助。

于 2017-01-13T13:29:38.950 回答