• We value your experience with Plesk during 2024
    Plesk strives to perform even better in 2025. To help us improve further, please answer a few questions about your experience with Plesk Obsidian 2024.
    Please take this short survey:

    https://pt-research.typeform.com/to/AmZvSXkx
  • The Horde webmail has been deprecated. Its complete removal is scheduled for April 2025. For details and recommended actions, see the Feature and Deprecation Plan.
  • We’re working on enhancing the Monitoring feature in Plesk, and we could really use your expertise! If you’re open to sharing your experiences with server and website monitoring or providing feedback, we’d love to have a one-hour online meeting with you.

Question Magento nginx

Miller

Basic Pleskian
I am using the following nginx additional directives form this page How to set up Magento 2.1.0 on Plesk with Nginx-only hosting option enabled

Code:
set $MAGE_ROOT "/var/www/vhosts/example.com/httpdocs";
index index.php;
error_page 404 403 = /errors/404.php;

access_log "/var/www/vhosts/system/example.com/logs/proxy_access_ssl_log";
error_log "/var/www/vhosts/system/example.com/logs/proxy_error_log";

location ~ ^/setup {
root $MAGE_ROOT;
location ~ ^/setup/index.php(/.*)?$ {
fastcgi_pass "unix:///var/www/vhosts/system/example.com/php-fpm.sock";
fastcgi_param PHP_FLAG "session.auto_start=off \n suhosin.session.cryptua=off";
fastcgi_param PHP_VALUE "memory_limit=756M \n max_execution_time=600";
fastcgi_read_timeout 600s;
fastcgi_connect_timeout 600s;

fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

location ~ ^/setup/(?!pub/). {
deny all;
}

location ~ ^/setup/pub/ {
add_header X-Frame-Options "SAMEORIGIN";
}
}

# PHP entry point for update application
location ~ ^/update {
root $MAGE_ROOT;
location ~ ^/update/index.php(/.*)?$ {
fastcgi_pass "unix:///var/www/vhosts/system/example.com/php-fpm.sock";
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}

# Deny everything but index.php
location ~ ^/update/(?!pub/). {
deny all;
}

location ~ ^/update/pub/ {
add_header X-Frame-Options "SAMEORIGIN";
}
if (!-e $request_filename){ rewrite ^(/.*)(/.+)$ /index.php$is_args$args last; }
}
location @fallback {
return 404;
}

#location / { try_files $uri $uri/ /index.php$is_args$args; }

location /pub/ {
location ~ ^/pub/media/(downloadable|customer|import|theme_customization/.*\.xml) { deny all; }
alias $MAGE_ROOT/pub/;
add_header X-Frame-Options "SAMEORIGIN";
}

location /static/ {
# Uncomment the following line in production mode
# expires max;

# Remove signature of the static files that is used to overcome the browser cache
location ~ ^/static/version { rewrite ^/static/(version[^/]+/)?(.*)$ /static/$2 last; }

location ~ ^/(.*\.(ico|jpg|jpeg|png|gif|svg|js|css|swf|eot|ttf|otf|woff|woff2))$ {
add_header Cache-Control "public";
add_header X-Frame-Options "SAMEORIGIN";
expires +1y;
log_not_found off;
access_log off;
add_header ETag "";
add_header Access-Control-Allow-Origin "www.example.com, cdn.example.com";

if (!-f $request_filename) { rewrite ^/static/?(.*)$ /static.php?resource=$1 last; }
}
location ~ ^/(.*\.(zip|gz|gzip|bz2|csv|xml))$ {
add_header Cache-Control "no-store";
add_header X-Frame-Options "SAMEORIGIN";
expires off;
log_not_found off;
access_log off;
add_header ETag "";
add_header Access-Control-Allow-Origin "www.example.com, cdn.example.com";

if (!-f $request_filename) { rewrite ^/static/?(.*)$ /static.php?resource=$1 last; }
}

if (!-f $request_filename) { rewrite ^/static/?(.*)$ /static.php?resource=$1 last; }
add_header X-Frame-Options "SAMEORIGIN";
}

location /media/ {
try_files $uri $uri/ /get.php$is_args$args;

location ~ ^/media/theme_customization/.*\.xml { deny all; }

location ~ ^/(.*\.(ico|jpg|jpeg|png|gif|svg|js|css|swf|eot|ttf|otf|woff|woff2))$ {
add_header Cache-Control "public";
add_header X-Frame-Options "SAMEORIGIN";
expires +1y;
log_not_found off;
access_log off;
add_header ETag "";
add_header Access-Control-Allow-Origin "www.example.com, cdn.example.com";

try_files $uri $uri/ /get.php$is_args$args;
}
location ~ ^/(.*\.(zip|gz|gzip|bz2|csv|xml))$ {
add_header Cache-Control "no-store";
add_header X-Frame-Options "SAMEORIGIN";
expires off;
log_not_found off;
access_log off;
add_header ETag "";
add_header Access-Control-Allow-Origin "www.example.com, cdn.example.com";

try_files $uri $uri/ /get.php$is_args$args;
}
add_header X-Frame-Options "SAMEORIGIN";
}

location /media/customer/ { deny all; }

location /media/downloadable/ { deny all; }

location /media/import/ { deny all; }

location ~ (index|get|static|report|404|503|health_check)\.php(/.*)?$ {
try_files $uri =404;

add_header X-Config-By 'ProTech' always;
add_header X-Processing-Time $request_time always;
add_header X-Request-ID $request_id always;
add_header X-UA-Compatible 'IE=Edge,chrome=1';
add_header Link "<$scheme://$http_host$request_uri>; rel=\"canonical\"" always;

fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass "unix:///var/www/vhosts/system//php-fpm.sock";
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;

fastcgi_buffers 1024 4k;

fastcgi_param PHP_FLAG "session.auto_start=off \n suhosin.session.cryptua=off";
fastcgi_param PHP_VALUE "memory_limit=756M \n max_execution_time=18000";
fastcgi_read_timeout 1800s;
fastcgi_connect_timeout 1800s;

}

location ~ /$ {
if (!-e $request_filename){ rewrite ^(/.*)([^/]+/)$ /index.php$is_args$args last; }
}

I cant add a product on the frontend and in the backend I get
A technical problem with the server created an error. Try again to continue what you were doing. If the problem persists, try again later.

I am guessing its blocking access to something but I cant find what it is
 
Last edited:
After a lot of messing around we decided not to use nginx. Just use apache and .htaccess and set nginx for static assets
 
After a lot of messing around we decided not to use nginx. Just use apache and .htaccess and set nginx for static assets

I seem to have got it working but I haven't fully tested it yet

Code:
## Example configuration:
# upstream fastcgi_backend {
    #    # use tcp connection
    #    # server  127.0.0.1:9000;
    #    # or socket
    #    server   unix:/var/run/php/php7.0-fpm.sock;
    # }
    # server {
        #    listen 80;
        #    server_name mage.dev;
        #    set $MAGE_ROOT /var/www/magento2;
        #    set $MAGE_DEBUG_SHOW_ARGS 1;
        #    include /vagrant/magento2/nginx.conf.sample;
        # }
        #
        ## Optional override of deployment mode. We recommend you use the
        ## command 'bin/magento deploy:mode:set' to switch modes instead.
        ##
        ## set $MAGE_MODE default; # or production or developer
        ##
        ## If you set MAGE_MODE in server config, you must pass the variable into the
        ## PHP entry point blocks, which are indicated below. You can pass
        ## it in using:
        ##
        ## fastcgi_param  MAGE_MODE $MAGE_MODE;
        ##
        ## In production mode, you should uncomment the 'expires' directive in the /static/ location block

        set $MAGE_ROOT "/var/www/vhosts/example.co.uk/httpdocs";

        index index.php;
        autoindex off;
        charset UTF-8;
        error_page 404 403 = /errors/404.php;
        #add_header "X-UA-Compatible" "IE=Edge";

        # Deny access to sensitive files
        location /.user.ini {
            deny all;
        }

        # PHP entry point for setup application
        location ~* ^/setup($|/) {
            root $MAGE_ROOT;
            location ~ ^/setup/index.php {
                fastcgi_pass "unix:///var/www/vhosts/system/example.co.uk/php-fpm.sock";

                fastcgi_param  PHP_FLAG  "session.auto_start=off \n suhosin.session.cryptua=off";
                fastcgi_param  PHP_VALUE "memory_limit=16384M \n max_execution_time=600";
                fastcgi_read_timeout 600s;
                fastcgi_connect_timeout 600s;

                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
            }

            location ~ ^/setup/(?!pub/). {
                deny all;
            }

            location ~ ^/setup/pub/ {
                add_header X-Frame-Options "SAMEORIGIN";
            }
        }

        # PHP entry point for update application
        location ~* ^/update($|/) {
            root $MAGE_ROOT;

            location ~ ^/update/index.php {
                fastcgi_split_path_info ^(/update/index.php)(/.+)$;
                fastcgi_pass "unix:///var/www/vhosts/system/example.co.uk/php-fpm.sock";
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                fastcgi_param  PATH_INFO        $fastcgi_path_info;
                include        fastcgi_params;
            }

            # Deny everything but index.php
            location ~ ^/update/(?!pub/). {
                deny all;
            }

            location ~ ^/update/pub/ {
                add_header X-Frame-Options "SAMEORIGIN";
            }
        }

        #location / {try_files $uri $uri/ /index.php$is_args$args;}

        location /pub/ {
            location ~ ^/pub/media/(downloadable|customer|import|theme_customization/.*\.xml) {
                deny all;
            }
            alias $MAGE_ROOT/pub/;
            add_header X-Frame-Options "SAMEORIGIN";
        }

        location /static/ {
            # Uncomment the following line in production mode
            # expires max;

            # Remove signature of the static files that is used to overcome the browser cache
            location ~ ^/static/version {
                rewrite ^/static/(version\d*/)?(.*)$ /static/$2 last;
            }

            location ~* \.(ico|jpg|jpeg|png|gif|svg|js|css|swf|eot|ttf|otf|woff|woff2|json)$ {
                add_header Cache-Control "public";
                add_header X-Frame-Options "SAMEORIGIN";
                expires +1y;

                if (!-f $request_filename) {
                    rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last;
                }
            }
            location ~* \.(zip|gz|gzip|bz2|csv|xml)$ {
                add_header Cache-Control "no-store";
                add_header X-Frame-Options "SAMEORIGIN";
                expires    off;

                if (!-f $request_filename) {
                    rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last;
                }
            }
            if (!-f $request_filename) {
                rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last;
            }
            add_header X-Frame-Options "SAMEORIGIN";
        }

        location /media/ {
            try_files $uri $uri/ /get.php$is_args$args;

            location ~ ^/media/theme_customization/.*\.xml {
                deny all;
            }

            location ~* \.(ico|jpg|jpeg|png|gif|svg|js|css|swf|eot|ttf|otf|woff|woff2)$ {
                add_header Cache-Control "public";
                add_header X-Frame-Options "SAMEORIGIN";
                expires +1y;
                try_files $uri $uri/ /get.php$is_args$args;
            }
            location ~* \.(zip|gz|gzip|bz2|csv|xml)$ {
                add_header Cache-Control "no-store";
                add_header X-Frame-Options "SAMEORIGIN";
                expires    off;
                try_files $uri $uri/ /get.php$is_args$args;
            }
            add_header X-Frame-Options "SAMEORIGIN";
        }

        location /media/customer/ {
            deny all;
        }

        location /media/downloadable/ {
            deny all;
        }

        location /media/import/ {
            deny all;
        }
        location /errors/ {
            location ~* \.xml$ {
                deny all;
            }
        }

        # PHP entry point for main application
        location ~ ^/(index|get|static|errors/report|errors/404|errors/503|health_check)\.php$ {
            try_files $uri =404;
            fastcgi_pass "unix:///var/www/vhosts/system/example.co.uk/php-fpm.sock";
            fastcgi_buffers 1024 4k;

            fastcgi_param  PHP_FLAG  "session.auto_start=off \n suhosin.session.cryptua=off";
            fastcgi_param  PHP_VALUE "memory_limit=16384M \n max_execution_time=18000";
            fastcgi_read_timeout 600s;
            fastcgi_connect_timeout 600s;

            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

        gzip on;
        gzip_disable "msie6";

        gzip_comp_level 6;
        gzip_min_length 1100;
        gzip_buffers 16 8k;
        gzip_proxied any;
        gzip_types
        text/plain
        text/css
        text/js
        text/xml
        text/javascript
        application/javascript
        application/x-javascript
        application/json
        application/xml
        application/xml+rss
        image/svg+xml;
        gzip_vary on;

        # Banned locations (only reached if the earlier PHP entry point regexes don't match)
        location ~* (\.php$|\.phtml$|\.htaccess$|\.git) {
            deny all;
        }
 
we have a working config.. the only thing that does not work is the installation / upgrade features in admin. Front end is fine.
 
Back
Top