鍍金池/ 問答/PHP  Linux/ php文件存在 訪問ip nginx顯示404找不到 靜態(tài)html文件可以訪問

php文件存在 訪問ip nginx顯示404找不到 靜態(tài)html文件可以訪問

服務器文件夾下php文件存在 訪問ip nginx卻顯示404找不到 靜態(tài)html文件可以訪問。谷歌百度修改了php-fpm和文件夾權(quán)限還是不對。我在本地虛擬機下搭建同樣配置就沒有問題。開啟了錯誤日志里面也沒有記錄。跪求大神指點一下


配置:

user www www;

worker_processes auto;

error_log /home/wwwlogs/nginx_error.log crit;

pid /usr/local/nginx/logs/nginx.pid;

Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200;

events

{
    use epoll;
    worker_connections 51200;
    multi_accept on;
}
http

{
    include       mime.types;
    default_type  application/octet-stream;

    server_names_hash_bucket_size 128;
    client_header_buffer_size 32k;
    large_client_header_buffers 4 32k;
    client_max_body_size 50m;

    sendfile   on;
    tcp_nopush on;

    keepalive_timeout 60;

    tcp_nodelay on;

    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 256k;

    gzip on;
    gzip_min_length  1k;
    gzip_buffers     4 16k;
    gzip_http_version 1.1;
    gzip_comp_level 2;
    gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss;
    gzip_vary on;
    gzip_proxied   expired no-cache no-store private auth;
    gzip_disable   "MSIE [1-6]\.";

    #limit_conn_zone $binary_remote_addr zone=perip:10m;
    ##If enable limit_conn_zone,add "limit_conn perip 10;" to server section.

    server_tokens off;
    access_log off;
server

{
    listen 80 default_server;
    #listen [::]:80 default_server ipv6only=on;
    server_name _;
    root  /home/wwwroot/ssrpanel/public;
  # index index.php;
    index  index.html index.htm index.php;


    #error_page   404   /404.html;

    # Deny access to PHP files in specific directory
    #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }

    include enable-php.conf;
location / {

try_files $uri $uri/ /index.php$is_args$args;
}

    location /nginx_status
    {
        stub_status on;
        access_log   off;
    }

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
    }

    location ~ .*\.(js|css)?$
    {
        expires      12h;
    }

    location ~ /.well-known {
        allow all;
    }

    location ~ /\.
    {
        deny all;
    }


    access_log  /home/wwwlogs/access.log;
}
include vhost/*.conf;
}

enanle-php.conf 配置:


location ~ [^/]\.php(/|$)
    {
        try_files $uri =404;
        fastcgi_pass  unix:/tmp/php-cgi.sock;
        fastcgi_index index.php;
        include fastcgi.conf;
    }

fast.cgi


fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  REQUEST_SCHEME     $scheme;
fastcgi_param  HTTPS              $https if_not_empty;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;
#fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";
回答
編輯回答
心夠野

你好!
1)nginx是一個靜態(tài)資源服務器
2)nginx只是將php的一些請求信息轉(zhuǎn)發(fā)給fastcgi這個進程管理器,然后再轉(zhuǎn)交給php-fpm
3)php-fpm會將資源轉(zhuǎn)給php腳本解析服務器的wrapper
4)你需要添加如下配置

location ~ \.php$ {
            #root           html;//這個是你網(wǎng)站的目錄,你要定義在server層,$document_root或者就是這個變量
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
2018年2月21日 18:02
編輯回答
礙你眼

配置里的php的include太多級了,感覺是fastcgi這里出的問題……

我給個標準版吧,替換下enable-php.conf里的內(nèi)容,重啟下看有沒有效果:

location ~ \.php$ {
    try_files $uri =404;
            
    # fastcgi
    fastcgi_pass                unix:/tmp/php-cgi.sock;
    fastcgi_index                index.php;
    fastcgi_split_path_info        ^(.+\.php)(/.+)$;
    fastcgi_param                SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_intercept_errors    off;
            
    fastcgi_buffer_size                128k;
    fastcgi_buffers                    256 16k;
    fastcgi_busy_buffers_size        256k;
    fastcgi_temp_file_write_size    256k;
            
    # default fastcgi_params
    include fastcgi_params;
}
2017年7月6日 23:49