Truy cập Nginx / PHP-FPM bị từ chối. Lỗi lỗi


14

Tôi đang cố gắng thiết lập máy chủ Ubuntu (12.04) mới cài đặt, nhưng tôi không thể nhận được các tệp PHP chạy qua php-fpm. Bất kể tôi làm gì, tôi luôn nhận được "Truy cập bị từ chối". trang (văn bản thuần túy, không phải html hoặc bất cứ điều gì).

Gói đã cài đặt:

nginx
nginx-common
nginx-full
php5
php5-cli
php5-common
php5-fpm

Chi tiết cấu hình:

PHP-FPM:

user = www-data
group = www-data
listen = /var/run/php5-fpm.sock

Nginx:

user www-data;
worker_processes 3;
events { worker_connections 1024; }

Miền mặc định / thử nghiệm:

server {
    listen       80;
    server_name  localhost;
    root         /extra/htdocs/default;
    index        index.html index.php

    access_log   /extra/logs/default/access.log;
    error_log    /extra/logs/default/error.log;

    location / {
        try_files  $uri $uri/ /index.html;
    }

    location ~ \.php
    {
        fastcgi_split_path_info  ^(.+\.php)(/.+)$;

        include fastcgi_params;

        fastcgi_index   index.php;
        fastcgi_pass    unix:/var/run/php5-fpm.sock;
        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;
    }
}

/extra/htdocs/default/index.php:

<?php
phpinfo();

Mọi thứ khác là mặc định. Cả nhật ký Nginx và php-fpm đều không có lỗi. Tuy nhiên, khi tôi tải, http://<server-ip>/index.phptôi nhận được trang "Truy cập bị từ chối".

Xử lý sự cố:

  • Tệp index.html hoạt động tốt. Do đó, nó phải là php-fpm hoặc liên kết fastcgi giữa Nginx và php-fpm.
  • Tôi đã đặt quyền sở hữu (cả người dùng và nhóm) của toàn bộ /extrathư mục www-datavà quyền sở hữu thành 777, để đảm bảo (tôi sẽ giảm âm lượng xuống một khi khóa học hoạt động). Vì vậy, nó chắc chắn không phải là một vấn đề quyền
  • Đây không phải là vấn đề về security.limit_extensions mà tôi thấy rất nhiều: theo mặc định được đặt thành .php, đó chính xác là những gì tôi yêu cầu. Tôi rõ ràng đã đặt nó .php .html, với kết quả tương tự.

Tôi thực sự cảm thấy mệt mỏi vì điều này, tôi đã cài đặt thiết lập này hai lần rồi (mặc dù trên các máy OSX) và mọi thứ đều hoạt động hoàn hảo. Có bất cứ điều gì tôi đang xem?

Nội dung nhật ký:

Nhật ký lỗi Nginx trống.

Nhật ký truy cập Nginx (loại bỏ ip):

<ip> - - [17/Jul/2012:11:21:25 +0200] "GET /favicon.ico HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11"
<ip> - - [17/Jul/2012:11:21:28 +0200] "GET /index.php HTTP/1.1" 403 46 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11"
<ip> - - [17/Jul/2012:11:21:34 +0200] "-" 400 0 "-" "-"

Nhật ký php-fpm:

[17-Jul-2012 10:44:14] NOTICE: fpm is running, pid 4969
[17-Jul-2012 10:44:14] NOTICE: ready to handle connections

Câu trả lời:


33

Cuối cùng đã sửa nó.

Thủ phạm là dòng này trong cấu hình của tôi:

fastcgi_param   PATH_TRANSLATED     $document_root$fastcgi_path_info;

Nếu tôi nhận xét dòng này, mọi thứ đều hoạt động tốt. Tuy nhiên tôi đã thấy điều này trong hầu hết các bài đăng tôi đọc về cấu hình Nginx, vì vậy nó làm phiền tôi. Khi nhìn vào các cấu hình của tôi lần thứ một triệu, tôi thấy rằng cgi.fix_pathinfo(in php.ini) được đặt thành 0, trong đó nó phải là 1. Giá trị mặc định mà PHP sử dụng cũng là 1, vì vậy tôi phải thay đổi điều này trong giờ gỡ lỗi của mình, vì tôi nhớ đọc về giá trị này và nghĩ rằng nó đã được đặt đúng.

Dù sao, có lẽ nó giúp bất cứ ai Googling cho vấn đề này.


5
Cảm ơn đã chia sẻ giải pháp. Bạn không nên tin vào các hướng dẫn vì các hướng dẫn đó có thể chứa các cấu hình không bảo mật. Những cấu hình đó vẫn có thể hoạt động chính xác, mặc dù.
Pothi Kalimuthu

Cảm ơn liên kết, tôi đã tình cờ thấy một vài lần và đã áp dụng những hướng dẫn đó. Lỗi có lẽ là của riêng tôi trong cơn thịnh nộ gỡ lỗi của tôi (sau x giờ bạn bắt đầu mất dấu một số điều bạn đã thay đổi).
Peter Kruithof

Của tôi là một chownvấn đề.
Jürgen Paul

Cảm ơn bạn rất nhiều. Đã làm việc với vấn đề này trong nhiều giờ và cgi.fix_pathinfođặt thành 0 (cấu hình mặc định) là vấn đề.
Mauvis Ledford

2
cgi.fix_pathinfo = 0được khuyến nghị bởi rất nhiều hướng dẫn bởi vì nó giúp giảm thiểu các lỗ hổng, cụ thể là các lỗ hổng thực thi mã php thông qua các tệp tùy ý. Vì vậy, nếu bạn đặt điều này thành 1, hãy chắc chắn rằng bạn biết những gì bạn đang làm hoặc chỉ định các giảm thiểu khác để bù đắp cho nó. Tôi tìm thấy bài đăng này để có một lời giải thích tốt về vấn đề này: nealpoole.com/blog/2011/04/ Khăn
MikeD
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.