Any way to fully replace nginx directives instead of appending

Discussion in 'Installation/Configuration' started by AngeloAvv, Apr 29, 2017.

  1. AngeloAvv

    AngeloAvv New Member

    Hi
    I'm trying to deploy a Symfony3 web site inside my local nginx server. Looking around I found that I need to write a vhost configuration like this:
    Code:
    server {
        server_name myserver.server.local www.myserver.server.local;
        root /var/www/clients/client1/web1/web/web;
    
        location / {
            # try to serve file directly, fallback to app.php
            try_files $uri /app.php$is_args$args;
        }
        # DEV
        # This rule should only be placed on your development environment
        # In production, don't include this and don't deploy app_dev.php or config.php
        location ~ ^/(app_dev|config)\.php(/|$) {
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_split_path_info ^(.+\.php)(/.*)$;
            include fastcgi_params;
            # When you are using symlinks to link the document root to the
            # current version of your application, you should pass the real
            # application path instead of the path to the symlink to PHP
            # FPM.
            # Otherwise, PHP's OPcache may not properly detect changes to
            # your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126
            # for more information).
            fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
            fastcgi_param DOCUMENT_ROOT $realpath_root;
        }
        # PROD
        location ~ ^/app\.php(/|$) {
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_split_path_info ^(.+\.php)(/.*)$;
            include fastcgi_params;
           # When you are using symlinks to link the document root to the
           # current version of your application, you should pass the real
           # application path instead of the path to the symlink to PHP
           # FPM.
           # Otherwise, PHP's OPcache may not properly detect changes to
           # your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126
           # for more information).
           fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
           fastcgi_param DOCUMENT_ROOT $realpath_root;
           # Prevents URIs that include the front controller. This will 404:
           # http://domain.tld/app.php/some-path
           # Remove the internal directive to allow URIs like this
           internal;
       }
    
       # return 404 for all other php files not matching the front controller
       # this prevents access to other php files you don't want to be accessible.
       location ~ \.php$ {
         return 404;
       }
    
       error_log /var/www/clients/client1/web1/web/var/logs/error.log;
       access_log /var/www/clients/client1/web1/web/var/logs/access.log;
    }
    but suddenly I figured out that writing this code inside the nginx directives section simply doesn't work because it doesn't override/overwrite the standard vhost configuration, but ispconfig appends it instead.

    Could someone please tell me how could I do this without manually overwriting the vhost file? I'm new using ISPConfig3. Thank you
     
  2. till

    till Super Moderator Staff Member ISPConfig Developer

    Adding a full server bock makes not much sense to me as this is all handled by ISPConfig already. Instead of pasting this into the nginx directives field, you just add the directives that are nescessary for the cms or framework that you use. In your case, most likely this should be enough:

    location / {
    # try to serve file directly, fallback to app.php
    try_files $uri /app.php$is_args$args;
    }

    If you want to override the php handlers anyway, then you can use the ##delete## and ##merge## directives as described in the ISPConfig manual to change blocks inside the server config.
     
    ahrasis likes this.

Share This Page