У меня есть сайт 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 поможет мне разобраться.