2015-04-01 1 views
0

Я в тупике, пытаясь понять, почему мой nginx + spawn-fastcgi служит для сырого двоичного содержимого вместо того, чтобы выполнять их и обслуживать результат.nginx + spawn-fcgi служит для сырого содержимого файла cgi (двоичного) (не выполняет их)

Целью является настройка Nagios Core 4.x с использованием NginX. На этом много замечательных блогов; но никто не пролил свет на мою проблему.

В настоящее время я использую CentOS 6.6 NginX v1.0.15, spawn-fcgi v1.6.3 и php (php-fpm) v5.4.30.

Хостинг PHP-файлов отлично работает (php-fpm), ** это только содержимое spawn-fcgi, с которым я столкнулся с проблемой, связанной с обслуживанием файлов /cgi-bin/*.cgi. Вот мой spwn-FCGI среда:

конфигурация
cat <<_EOF> /etc/sysconfig/spawn-fcgi 
OPTIONS="-u apache -g apache -a 127.0.0.1 -p 9001 -C 32 -F 1 -P /var/run/spawn-fcgi.pid -- /usr/bin/php-cgi" 
_EOF 

Мои Nginx:

server { 
    listen 80; 
    server_name monitor.mydomain.com; 
    return 301 https://$server_name$request_uri; 
} 

server { 
    listen 443; 

    # Satisfy allows us to bypass authentication 
    # for allowed ip addresses 
    satisfy any; 
    # Local Traffic only 
    allow 192.168.0.0/24; 
    allow 127.0.0.0/8; 
    # drop rest of the world 
    deny all; 

    server_name monitor.mydomain.com; 
    root /usr/share/nagios; 

    ssl_session_timeout 5m; 
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128:AES256:AES:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK'; 
    ssl_prefer_server_ciphers on; 
    ssl_session_cache builtin:1000 shared:SSL:10m; 

    ssl on; 
    ssl_certificate  /etc/pki/tls/certs/mydomain.com.crt; 
    ssl_certificate_key /etc/pki/tls/private/mydomain.com.key; 

    index index.php index.html index.htm; 

    access_log /var/log/nginx/nagios.access.log; 
    error_log /var/log/nginx/nagios.error.log; 

    # Security 
    auth_basic   "Restricted Area"; 
    auth_basic_user_file mynagios.htpasswd; 

    location ~ \.htaccess { 
     deny all; 
    } 

    location/{ 
     if ($uri ~* "\.(ico|css|js|gif|jpe?g|png)(\?[0-9]+)?$") { 
     expires max; 
     break; 
     } 
    } 

    error_page 404    /404.html; 
    location = /404.html { 
     root /usr/share/nginx/html; 
    } 

    # redirect server error pages to the static page /50x.html 
    # 
    error_page 500 502 503 504 /50x.html; 
    location = /50x.html { 
     root /usr/share/nginx/html; 
    } 

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 
    # 
    location ~ \.php$ { 
     try_files $uri = 404; 

     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     fastcgi_pass 127.0.0.1:9000; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     include  fastcgi_params; 
    } 

    #location ~ \.cgi$ { 
    location /nagios/cgi-bin/ { 
     root /usr/lib64/nagios/cgi; 
     rewrite ^/nagios/cgi-bin/(.*)\.cgi /$1.cgi break; 

     fastcgi_param AUTH_USER $remote_user; 
     fastcgi_param REMOTE_USER $remote_user; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     #fastcgi_pass unix:/var/run/php-fcgi.sock; 
     fastcgi_pass 127.0.0.1:9001; 
     include  fastcgi_params; 
    } 
} 

инструмент в вопросе работает:

[[email protected] conf.d]# netstat -pnat | egrep '900(0|1)' 
tcp  0  0 127.0.0.1:9000    0.0.0.0:*     LISTEN  9054/php-fpm   
tcp  0  0 127.0.0.1:9001    0.0.0.0:*     LISTEN  28888/php-cgi 

Опять же, в двух словах; эта конфигурация «почти» работает очень хорошо, но запрос как https://monitor.mydomain.com/nagios/cgi-bin/status.cgi сервера контента:

ELF>... <raw ugly content> 

Стоит также отметить, я был с помощью SELinux (написал свой собственный модуль для Nagios), но выводил его из строя (все SELinux), пока я не смогу решить эту проблему cgi.

Любой совет, который вы, ребята, можете предоставить, будет фантастическим! TIA

ответ

0

Я понял проблему; если у кого-то будет такая же проблема, как у меня, это было результатом не использования fcgiwrap. Я просто выполнил инструкции и скомпилировал их.

Использование fcgiwrap позволило мне выполнить код мицелий-FCGI возвращается вместо отображения необработанных данных (моя проблема):

cat <<_EOF> /etc/sysconfig/spawn-fcgi 
OPTIONS="-u apache -g apache -a 127.0.0.1 -p 9001 -f /usr/sbin/fcgiwrap -P /var/run/spawn-fcgi.pid" 
_EOF 

# Now restart spawn-fcgi 
service spawn-fcgi restart 
+0

Я использовал fcgiwrap (но не нерестится-FCGI), но я получил бинарный ответ HTTP: //stackoverflow.com/questions/34397333/c-cgi-script-response-is-binary-format –