Назад | Перейти на главную страницу

Развертывание бетонной смеси на nginx

У меня есть сайт specific5, который работает «из коробки» на сервере apache. Однако у меня много проблем с его запуском в nginx.

Ниже представлена ​​конфигурация nginx, которую я использую:

server {
    root /home/test/public;
    index index.php;

    access_log /home/test/logs/access.log;
    error_log /home/test/logs/error.log;

    location / {
            # First attempt to serve request as file, then
            # as directory, then fall back to index.html
            try_files $uri $uri/ index.php;
            # Uncomment to enable naxsi on this location
            # include /etc/nginx/naxsi.rules
    }
    # pass the PHP scripts to FastCGI server listening on unix socket
    #
    location ~ \.php($|/) {
            fastcgi_pass unix:/tmp/phpfpm.sock;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            include fastcgi_params;
    }
    location ~ /\.ht {
            deny  all;
    }
}

Я могу получить домашнюю страницу, но у меня проблема с внутренними страницами. На внутренних страницах отображается сообщение «Доступ запрещен». Возможно, перезапись не работает, по сути, я думаю, что она запрашивает и пытается выполнить файлы php напрямую, а не через конкретный диспетчер.

Я совершенно потерялся здесь.

Заранее благодарим вас за помощь.

Взгляните на конфигурацию ниже. Он использовался для Debian 8, NGinx с PHP-FPM 7.1. Проблемы, которые у меня были, были связаны с "Доступ запрещен" на панели инструментов (ccm) и несколькими блоками редактирования, которые больше не работали (разработка велась на Apache 2.4 с PHP 5.6, с использованием mod-apache)

Фокус создавал рабочее «местоположение /» try_files $ uri $ uri / /index.php?q=$uri&$args;

server { listen 80; server_name www.example.com; root /var/www/example.com/www;

   index index.php index.html index.htm default.html default.htm;

    add_header Access-Control-Allow-Origin *;
    #add_header X-Frame-Options "ALLOWALL";

   location = /favicon.ico {
            log_not_found off;
            access_log off;
   }

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

    location / {
            # try_files $uri $uri/ =404;
            try_files $uri $uri/ /index.php?q=$uri&$args;
    }

location ~ \.php($|/) {
        set $script $uri;
        if ($uri ~ "^(.+\.php)(/.+)") {
                set $script $1;
        }
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$script;
        fastcgi_intercept_errors on;
        fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
}

}

Изменены конфигурации на:

server {
    root /home/test/public;
    index index.php;

    access_log /home/test/logs/access.log;
    error_log /home/test/logs/error.log;

    location / {
            # First attempt to serve request as file, then
            # as directory, then fall back to index.html
            try_files $uri $uri/ /index.php/$request_uri;
            # Uncomment to enable naxsi on this location
            # include /etc/nginx/naxsi.rules
    }

    # pass the PHP scripts to FastCGI server listening on unix socket
    #
    location ~ \.php($|/) {
            set $script $uri;
            if ($uri ~ "^(.+\.php)(/.+)") {
                    set $script $1;
            }
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$script;
            fastcgi_intercept_errors on;
            fastcgi_pass unix:/tmp/phpfpm.sock;
    }

    location ~ /\.ht {
            deny  all;
    }
}

И это работает благодаря похмелью и ссылка на сайт он предоставил.

Я до сих пор не понимаю, что я сделал не так, возможно, эксперт по nginx поможет мне разобраться.