Php – Nginx + php5-fpm + Drupal: 404 “File not found”

drupalnginxPHP

I've tried to get Nginx + PHP5-FPM + Drupal 7 working, but when I vist my domain, I get "404" not found.

My Configs are based on:
https://github.com/perusio/drupal-with-nginx
https://github.com/perusio/php-fpm-example-config

/etc/nginx/nginx.conf

# -*- mode: nginx; mode: flyspell-prog;  ispell-local-dictionary: "american" -*-
user www-data;
worker_processes 4;

error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

worker_rlimit_nofile 8192;

events {
    worker_connections 4096;
    ## Accept as many connections as possible.
    multi_accept on;
}

http {
    ## MIME types.
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ## FastCGI.
    include /etc/nginx/fastcgi.conf;

    ## Default log and error files.
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ## Use sendfile() syscall to speed up I/O operations and speed up
    ## static file serving.
    sendfile on;
    ## Handling of IPs in proxied and load balancing situations.
    set_real_ip_from 0.0.0.0/32; # all addresses get a real IP.
    real_ip_header X-Forwarded-For; # the ip is forwarded from the load balancer/proxy

    ## Define a zone for limiting the number of simultaneous
    ## connections nginx accepts. 1m means 32000 simultaneous
    ## sessions. We need to define for each server the limit_conn
    ## value refering to this or other zones.
    ## ** This syntax requires nginx version >=
    ## ** 1.1.8. Cf. http://nginx.org/en/CHANGES. If using an older
    ## ** version then use the limit_zone directive below
    ## ** instead. Comment out this
    ## ** one if not using nginx version >= 1.1.8.
    limit_conn_zone $binary_remote_addr zone=arbeit:10m;

    ## Define a zone for limiting the number of simultaneous
    ## connections nginx accepts. 1m means 32000 simultaneous
    ## sessions. We need to define for each server the limit_conn
    ## value refering to this or other zones.
    ## ** Use this directive for nginx versions below 1.1.8. Uncomment the line below.
    #limit_zone arbeit $binary_remote_addr 10m;

    ## Timeouts.
    client_body_timeout 60;
    client_header_timeout 60;
    keepalive_timeout 10 10;
    send_timeout 60;

    ## Reset lingering timed out connections. Deflect DDoS.
    reset_timedout_connection on;

    ## Body size.
    client_max_body_size 10m;

    ## TCP options.
    tcp_nodelay on;
    ## Optimization of socket handling when using sendfile.
    tcp_nopush on;

    ## Compression.
    gzip on;
    gzip_buffers 16 8k;
    gzip_comp_level 1;
    gzip_http_version 1.1;
    gzip_min_length 10;
    gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript image/x-icon application/vnd.ms-fontobject font/opentype application/x-font-ttf;
    gzip_vary on;
    gzip_proxied any; # Compression for all requests.
    ## No need for regexps. See
    ## http://wiki.nginx.org/NginxHttpGzipModule#gzip_disable
    gzip_disable "msie6";

    ## Serve already compressed files directly, bypassing on-the-fly
    ## compression.
    ##
    # Usually you don't make much use of this. It's better to just
    # enable gzip_static on the locations you need it.
    # gzip_static on;

    ## Hide the Nginx version number.
    server_tokens off;

    ## Use a SSL/TLS cache for SSL session resume. This needs to be
    ## here (in this context, for session resumption to work. See this
    ## thread on the Nginx mailing list:
    ## http://nginx.org/pipermail/nginx/2010-November/023736.html.
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    ## Uncomment to increase map_hash_bucket_size. If start getting
    ## [emerg]: could not build the map_hash, you should increase
    ## map_hash_bucket_size: 64 in your
    ## logs. Cf. http://wiki.nginx.org/NginxOptimizations.
    #map_hash_bucket_size 192;

    ## For the filefield_nginx_progress module to work. From the
    ## README. Reserve 1MB under the name 'uploads' to track uploads.
    #upload_progress uploads 1m;

    ## Enable clickjacking protection in modern browsers. Available in
    ## IE8 also. See
    ## https://developer.mozilla.org/en/The_X-FRAME-OPTIONS_response_header
    ## This may conflicts with pseudo streaming (at least with Nginx version 1.0.12).
    ## Uncomment the line below if you're not using media streaming.
    ## For sites *using* frames uncomment the line below.
    #add_header X-Frame-Options SAMEORIGIN;
    ## For sites *not* using frames uncomment the line below.
    #add_header X-Frame-Options DENY;

    ## Block MIME type sniffing on IE.
    add_header X-Content-Options nosniff;

    ## Include the upstream servers for PHP FastCGI handling config.
    ## This one uses the FCGI process listening on TCP sockets.
    #include upstream_phpcgi_tcp.conf;

    ## Include the upstream servers for PHP FastCGI handling
    ## configuration. This setup uses UNIX sockets for talking with the
    ## upstream.
    include upstream_phpcgi_unix.conf;

    ## Include the map to block HTTP methods.
    include map_block_http_methods.conf;

    ## If using Nginx version >= 1.1.11 then there's a $https variable
    ## that has the value 'on' if the used scheme is https and '' if not.
    ## See: http://trac.nginx.org/nginx/changeset/4380/nginx
    ## http://trac.nginx.org/nginx/changeset/4333/nginx and
    ## http://trac.nginx.org/nginx/changeset/4334/nginx. If using a
    ## previous version then uncomment out the line below.
    #include map_https_fcgi.conf;

    ## Include this line, if used in a loadbalanced environment
    ## and comment the line which includes map_https_fcgi.conf.
    ## If the loadbalancer always sends the request in http protocol,
    ## and adds the server variable $http_x_forwarded_proto
    #include map_https_forwarded_proto.conf;

    ## Include the upstream servers for Apache handling the PHP
    ## processes. In this case Nginx functions as a reverse proxy.
    #include reverse_proxy.conf;
    #include upstream_phpapache.conf;

    ## Include the php-fpm status allowed hosts configuration block.
    ## Uncomment to enable if you're running php-fpm.
    #include php_fpm_status_allowed_hosts.conf;

    ## Include the Nginx stub status allowed hosts configuration block.
    include nginx_status_allowed_hosts.conf;

    ## If you want to run cron using Drupal cron.php. i.e., you're not
    ## using drush then uncomment the line below. Specify in
    ## cron_allowed_hosts.conf which hosts can invole cron.
    # include apps/drupal/cron_allowed_hosts.conf;

    ## Include blacklist for bad bot and referer blocking.
    include blacklist.conf;

    ## Include the caching setup. Needed for using Drupal with an external cache.
    include map_cache.conf;

    ## Microcache zone definition for FastCGI.
    include fastcgi_microcache_zone.conf;

    ## If you're using Apache for handling PHP then comment the line
    ## above and uncomment the line below.
    #include proxy_microcache_zone.conf

    #BM
    types_hash_max_size 2048;
    types_hash_bucket_size 32;
    server_names_hash_bucket_size 64;

    ## Include all vhosts.
    include /etc/nginx/sites-enabled/*;
}

netstat –unix -l

Proto RefCnt Flags       Type       State         I-Node   Pfad
unix  2      [ ACC ]     STREAM     HÖRT         6190     /var/run/dbus/system_bus_socket
unix  2      [ ACC ]     STREAM     HÖRT         5833     @/com/ubuntu/upstart
unix  2      [ ACC ]     STREAM     HÖRT         7574     /var/run/acpid.socket
unix  2      [ ACC ]     STREAM     HÖRT         20672    /var/run/php5-fpm.sock
unix  2      [ ACC ]     STREAM     HÖRT         20675    /var/run/php-fpm-zwei.sock
unix  2      [ ACC ]     STREAM     HÖRT         20678    /var/run/php-fpm.sock
unix  2      [ ACC ]     STREAM     HÖRT         20681    /var/run/php-fpm-drei.sock

php -v

PHP 5.4.9-4ubuntu2.2 (cli) (built: Jul 15 2013 18:23:35) 
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies

vhost

## HTTP server.
server {
    listen 80; # IPv4

    server_name myserver.com;
    limit_conn arbeit 32;

    ## Access and error logs.
    access_log /var/log/nginx/myserver.com_access.log;
    error_log /var/log/nginx/myserver.com_error.log;

    ## See the blacklist.conf file at the parent dir: /etc/nginx.
    ## Deny access based on the User-Agent header.
    if ($bad_bot) {
        return 444;
    }
    ## Deny access based on the Referer header.
    if ($bad_referer) {
        return 444;
    }

    ## Protection against illegal HTTP methods. Out of the box only HEAD,
    ## GET and POST are allowed.
    if ($not_allowed_method) {
        return 405;
    }

    ## Filesystem root of the site and index.
    root /var/www/myserver/htdocs;
    index index.php;

    ## If you're using a Nginx version greater or equal to 1.1.4 then
    ## you can use keep alive connections to the upstream be it
    ## FastCGI or Apache. If that's not the case comment out the line below.
    fastcgi_keep_conn on; # keep alive to the FCGI upstream

    ## Uncomment if you're proxying to Apache for handling PHP.
    #proxy_http_version 1.1; # keep alive to the Apache upstream

    ################################################################
    ### Generic configuration: for most Drupal 7 sites.
    ################################################################
    include apps/drupal/drupal.conf;

    #################################################################
    ### Configuration for Drupal 7 sites that use boost.
    #################################################################
    #include apps/drupal/drupal_boost.conf;

    #################################################################
    ### Configuration for updating the site via update.php and running
    ### cron externally. If you don't use drush for running cron use
    ### the configuration below.
    #################################################################
    #include apps/drupal/drupal_cron_update.conf;

    ################################################################
    ### Installation handling. This should be commented out after
    ### installation if on an already installed site there's no need
    ### to touch it. If on a yet to be installed site. Uncomment the
    ### line below and comment out after installation. Note that
    ### there's a basic auth in front as secondary ligne of defense.
    ################################################################
    #include apps/drupal/drupal_install.conf;

    #################################################################
    ### Support for upload progress bar. Configurations differ for
    ### Drupal 6 and Drupal 7.
    #################################################################
    include apps/drupal/drupal_upload_progress.conf;

    ## Including the php-fpm status and ping pages config.
    ## Uncomment to enable if you're running php-fpm.
    #include php_fpm_status_vhost.conf;

    ## Including the Nginx stub status page for having stats about
    ## Nginx activity: http://wiki.nginx.org/HttpStubStatusModule.
    include nginx_status_vhost.conf;

} # HTTP server

/var/www/myserver/htdocs

drwxr-xr-x  9 www-data www-data  4096 Aug 25 16:00 ./
drwxr-xr-x  3 www-data www-data  4096 Aug 25 11:29 ../
-rw-r--r--  1 www-data www-data     0 Aug 25 13:40 apple-touch-icon.png
-rw-r--r--  1 www-data www-data     0 Aug 25 13:41 apple-touch-icon_precomposed.png
-rw-r--r--  1 www-data www-data  6604 Aug  8 04:04 authorize.php
-rw-r--r--  1 www-data www-data 82086 Aug  8 04:04 CHANGELOG.txt
-rw-r--r--  1 www-data www-data  1481 Aug  8 04:04 COPYRIGHT.txt
-rw-r--r--  1 www-data www-data   720 Aug  8 04:04 cron.php
drwxr-xr-x  4 www-data www-data  4096 Aug 25 12:00 includes/
-rw-r--r--  1 www-data www-data   529 Aug  8 04:04 index.php
-rw-r--r--  1 www-data www-data  1451 Aug  8 04:04 INSTALL.mysql.txt
-rw-r--r--  1 www-data www-data  1874 Aug  8 04:04 INSTALL.pgsql.txt
-rw-r--r--  1 www-data www-data   703 Aug  8 04:04 install.php
-rw-r--r--  1 www-data www-data  1298 Aug  8 04:04 INSTALL.sqlite.txt
-rw-r--r--  1 www-data www-data 17861 Aug  8 04:04 INSTALL.txt
-rw-r--r--  1 www-data www-data 18092 Sep 17  2011 LICENSE.txt
-rw-r--r--  1 www-data www-data  8191 Aug  8 04:04 MAINTAINERS.txt
drwxr-xr-x  4 www-data www-data  4096 Aug 25 12:00 misc/
drwxr-xr-x 42 www-data www-data  4096 Aug 25 12:00 modules/
drwxr-xr-x  5 www-data www-data  4096 Aug 25 12:00 profiles/
-rw-r--r--  1 www-data www-data  5376 Aug  8 04:04 README.txt
-rw-r--r--  1 www-data www-data  1561 Aug  8 04:04 robots.txt
drwxr-xr-x  2 www-data www-data  4096 Aug 25 12:00 scripts/
drwxr-xr-x  4 www-data www-data  4096 Aug 25 12:00 sites/
drwxr-xr-x  7 www-data www-data  4096 Aug 25 12:00 themes/
-rw-r--r--  1 www-data www-data 19941 Aug  8 04:04 update.php
-rw-r--r--  1 www-data www-data  9642 Aug  8 04:04 UPGRADE.txt
-rw-r--r--  1 www-data www-data  2178 Aug  8 04:04 web.config
-rw-r--r--  1 www-data www-data   417 Aug  8 04:04 xmlrpc.php

/var/log/php5-fpm.log

[25-Aug-2013 18:25:52] NOTICE: configuration file /etc/php5/fpm/php-fpm.conf test is successful
[25-Aug-2013 18:25:53] NOTICE: fpm is running, pid 4546
[25-Aug-2013 18:25:53] NOTICE: ready to handle connections

Best Answer

Please check your root path on the vhost file and the file permission of the folder

The file not found error normally appears if the the file is not present or it is not accessible by the browser.

Related Topic