Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I am trying out nginx on my Ubuntu 14.04 desktop, I have referred to some basic setup articles and have installed the latest Nginx and PHP-FPM from the apt repository. I have nginx working and can get my html pages displayed on the browser, however when I try to call a .php page it downloads the .php file instead of rendering webpage with .php output. I am using the following server definition in the /etc/nginx/sites-available/default :

server {
listen 80 default_server;
#listen [::]:80 default_server ipv6only=on;

root /home/munjal/public_html;
index index.html index.htm;

# Make site accessible from http://localhost/
server_name localhost;

location / {
    # First attempt to serve request as file, then
    # as directory, then fall back to displaying a 404.
    # try_files $uri $uri/ =404;
    # Uncomment to enable naxsi on this location
    # include /etc/nginx/naxsi.rules
}

# Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests
#location /RequestDenied {
#   proxy_pass http://127.0.0.1:8080;    
#}

#error_page 404 /404.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$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
#   # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
#   # With php5-cgi alone:
#   fastcgi_pass 127.0.0.1:9000;
#   # With php5-fpm:
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
#   deny all;
#}

}

However now if I change my server definition to listen on port 8080 instead of 80 then the request is passed to php-fpm and a web page is rendered with the php output :

listen 8080 default_server;
share|improve this question
    
I have rebuild your Setup - It works for me. What your Log Files say ? PHP Log <br> /var/log/php5-fpm.log Nginx Log <br> /var/log/nginx/error.log –  CookieCrash Jun 15 at 15:13
1  
Are you accessing your website using localhost ? If not, then you will get the nginx default website instead of this one. If you want to access this by some other name, put it in server_name. –  Tero Kilkanen Jun 16 at 17:44
    
Tero Kilkanen i had already got it to work that way and thanks for the help, I reckon you post the solution as an answer so that I can up vote. –  Munjal Jun 17 at 7:00

1 Answer 1

You have no location block for processing PHP requests. You need to have one, for example:

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

    include /etc/nginx/fastcgi_params;
    fastcgi_pass unix:/path/to/php.sock;
    fastcgi_index index.php;
}
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.