# Nginx configuration & PHP FastCGI

**URL:** <https://help.nextcloud.com/t/nginx-configuration-php-fastcgi/9004>\
**Category:** ℹ️ Support\
**Created:** [February 16, 2017, 11:32am UTC](https://help.nextcloud.com/t/nginx-configuration-php-fastcgi/9004 "2017-02-16T11:32:37Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![julian](https://help.nextcloud.com/letter_avatar/julian/32/6_22734026db12803ebb3e059622ac3534.png) [@julian](https://help.nextcloud.com/u/julian)\
**Post date:** [February 16, 2017, 11:32am UTC](https://help.nextcloud.com/t/nginx-configuration-php-fastcgi/9004/1 "2017-02-16T11:32:37Z")

</div>

Hello,

Im running Nextcloud 11.0.1 on a Raspberry Pi 3B.  
I have used the [sample nginx configuration provided in the documentation](https://docs.nextcloud.com/server/11/admin_manual/installation/nginx_nextcloud_9x.html#nextcloud-in-a-subdir-of-nginx) and for Nextcloud it works perfectly.

However, I’m also running an instance of [Gogs: Go Git Service](https://gogs.io) on the same machine and whenever I try to browse to a PHP-file in any repository I just get a “File not found” page.  
I reckon there is a problem somewhere in the configuration (FastCGI I guess), but I can’t figure out where since I have only little knowledge about nginx.  
Can anybody help me tweak the configuration file so that both services work?

**EDIT**  
This is my actual nginx configuration:

```
upstream php-handler {
    server 127.0.0.1:9000;
}

server {
   listen 80;
   server_name domain.com;
   # enforce https
   return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name domain.com;

    ssl_certificate /path/to/certificate;
    ssl_certificate_key /path/to/certificate/key;

    # Security Headers
    add_header Strict-Transport-Security "max-age=15768000";
    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Robots-Tag none;
    add_header X-Download-Options noopen;
    add_header X-Permitted-Cross-Domain-Policies none;

   # Path to the root of your installation
   root /var/www;

   location = /robots.txt {
       allow all;
        log_not_found off;
        access_log off;
    }

    location ~ \.php(?:$|/) {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param HTTPS on;
        fastcgi_param modHeadersAvailable true;
        fastcgi_param front_controller_active true;
        fastcgi_pass php-handler;
        fastcgi_intercept_errors on;
    }

    location = /.well-known/carddav {
        return 301 $scheme://$host/nextcloud/remote.php/dav;
    }
    location = /.well-known/caldav {
        return 301 $scheme://$host/nextcloud/remote.php/dav;
    }

    location /.well-known/acme-challenge { }

    location ^~ /nextcloud {
        # set max upload size
        client_max_body_size 20148M;
        fastcgi_buffers 64 4K;

        # Disable gzip to avoid the removal of the ETag header
        gzip off;

        error_page 403 /nextcloud/core/templates/403.php;
        error_page 404 /nextcloud/core/templates/404.php;

        location /nextcloud {
            rewrite ^ /nextcloud/index.php$uri;
        }

        location ~ ^/nextcloud/(?:build|tests|config|lib|3rdparty|templates|data)/ {
            deny all;
        }
        location ~ ^/nextcloud/(?:\.|autotest|occ|issue|indie|db_|console) {
            deny all;
        }

        location ~ ^/nextcloud/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {
            include fastcgi_params;
            fastcgi_split_path_info ^(.+\.php)(/.*)$;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_param HTTPS on;
            #Avoid sending the security headers twice
            fastcgi_param modHeadersAvailable true;
            fastcgi_param front_controller_active true;
            fastcgi_pass php-handler;
            fastcgi_intercept_errors on;
        }

        location ~ ^/nextcloud/(?:updater|ocs-provider)(?:$|/) {
            try_files $uri/ =404;
            index index.php;
        }

        # Adding the cache control header for js and css files
        # Make sure it is BELOW the PHP block
        location ~* \.(?:css|js|woff|svg|gif)$ {
            try_files $uri /nextcloud/index.php$uri$is_args$args;
            add_header Cache-Control "public, max-age=7200";
            # Add headers to serve security related headers (It is intended
            # to have those duplicated to the ones above)
            # Before enabling Strict-Transport-Security headers please read
            # into this topic first.
            # add_header Strict-Transport-Security "max-age=15768000;
            # includeSubDomains; preload;";
            add_header X-Content-Type-Options nosniff;
            add_header X-Frame-Options "SAMEORIGIN";
            add_header X-XSS-Protection "1; mode=block";
            add_header X-Robots-Tag none;
            add_header X-Download-Options noopen;
            add_header X-Permitted-Cross-Domain-Policies none;
            # Optional: Don't log access to assets
            access_log off;
        }

        location ~* \.(?:png|html|ttf|ico|jpg|jpeg)$ {
            try_files $uri /nextcloud/index.php$uri$is_args$args;
            # Optional: Don't log access to other assets
            access_log off;
        }
    }

    location /gogs/ {
        proxy_pass http://localhost:3000/;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

```

}  
`

---

<div class="post-metadata">

**Author:** ![tflidd](https://help.nextcloud.com/letter_avatar/tflidd/32/6_22734026db12803ebb3e059622ac3534.png) [@tflidd](https://help.nextcloud.com/u/tflidd)\
**Post date:** [February 16, 2017, 9:43pm UTC](https://help.nextcloud.com/t/nginx-configuration-php-fastcgi/9004/2 "2017-02-16T21:43:32Z")

</div>

Do you use this services in different subdomains or sub-folders?

---

<div class="post-metadata">

**Author:** ![julian](https://help.nextcloud.com/letter_avatar/julian/32/6_22734026db12803ebb3e059622ac3534.png) [@julian](https://help.nextcloud.com/u/julian)\
**Post date:** [February 17, 2017, 7:41am UTC](https://help.nextcloud.com/t/nginx-configuration-php-fastcgi/9004/3 "2017-02-17T07:41:46Z")

</div>

Yes I do.  
Nextcloud: /var/www/nextcloud -\> [domain.com/nextcloud](http://domain.com/nextcloud)  
Gogs: /home/pi/gogs -\> [domain.com/gogs](http://domain.com/gogs)

I have included my actual nginx configuration in my initial post

---

<div class="post-metadata">

**Author:** ![riegerCLOUD](https://help.nextcloud.com/user_avatar/help.nextcloud.com/riegercloud/32/53593_2.png) [@riegerCLOUD](https://help.nextcloud.com/u/riegerCLOUD)\
**Post date:** [February 17, 2017, 8:42am UTC](https://help.nextcloud.com/t/nginx-configuration-php-fastcgi/9004/4 "2017-02-17T08:42:54Z")

</div>

if you are interested in please have a look at my [blog](https://www.c-rieger.de/nextcloud-installation-guide/#zehn).  
chapter 10 describes in detail how to run nextcloud in parallel with other apps, based on nginx and php7.

---

<div class="post-metadata">

**Author:** ![wwe](https://help.nextcloud.com/user_avatar/help.nextcloud.com/wwe/32/72963_2.png) [@wwe](https://help.nextcloud.com/u/wwe)\
**Post date:** [November 27, 2024, 8:37pm UTC](https://help.nextcloud.com/t/nginx-configuration-php-fastcgi/9004/5 "2024-11-27T20:37:42Z")

</div>



---

<div class="post-metadata">

**Author:** ![wwe](https://help.nextcloud.com/user_avatar/help.nextcloud.com/wwe/32/72963_2.png) [@wwe](https://help.nextcloud.com/u/wwe)\
**Post date:** [December 9, 2024, 1:16pm UTC](https://help.nextcloud.com/t/nginx-configuration-php-fastcgi/9004/6 "2024-12-09T13:16:18Z")

</div>


