Modify document root for nginx proxy under plesk

2019-05-15 09:14发布

问题:

I use Plesk with nginx as proxy, which is working good. I installed laravel php framework on a subdomain. the framework provides a direcotry "public" for public files, so I changed document_root with a custom vhost.conf file this way:

DocumentRoot "/var/www/vhosts/example.com/laravel.example.com/public"

Now apache is aware of this, PHP files working without any problems, but not the static files which are handeled via nginx, I get 404 not found because I must also reconfig the document_root for nginx.

If I copy the static files, like css or js on the same dir-level as public it works, but the static files should be in "public".

how to reconfig the document root for this nginx vhost now? I tried to add

root /var/www/vhosts/example.com/laravel.example.com/public;

into the server { ... and "then location /" directive ...

to a custom nginx.conf file in the "conf" directroy of plesk for this vhost but dont work.

回答1:

For Plesk 12.0 and above there UI controls to specify domain's additional nginx/apache directives in "Web Server Settings":

For Plesk 11.5 you can add custom directive:

  1. mkdir /usr/local/psa/admin/conf/templates/custom/domain

  2. cp /usr/local/psa/admin/conf/templates/default/domain/nginxDomainVirtualHost.php /usr/local/psa/admin/conf/templates/custom/domain/

  3. add in /usr/local/psa/admin/conf/templates/custom/domain/nginxDomainVirtualHost.php:

    <?php if (file_exists($VAR->domain->physicalHosting->vhostDir . '/conf/nginx.conf')): ?>
        include <?php echo $VAR->domain->physicalHosting->vhostDir;?>/conf/nginx.conf;
    <?php endif ?>
    
  4. /usr/local/psa/admin/bin/httpdmng --reconfigure-all # to apply new configuration for all domains

As result, if domain has conf/nginx.conf - it will be included into virtual host config.