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;    

#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
location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
#   # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#   # With php5-cgi alone:
#   fastcgi_pass;
#   # 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;
  • 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 '14 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 '14 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 '14 at 7:00

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;
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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