nginx обслуживает 404 для всех файлов php, кроме index.Stack Overflow

Я новичок в nginx и пытаюсь переместить на него сайт WordPress.

Проблема в том, что мне нужно запустить файл с именем «installer.php», и nginx показывает ошибку 404 для него (из домена / rocketstack / installer.php).
В случае, если я добавлю конкретную директиву location, мне будет возвращена ошибка «Не указан входной файл» (не уверен, что я делаю это правильно).
Доступ к домену / rocketstack / index.php напрямую возвращает те же 404, но работает, если я перехожу к домену / rocketstack / (это нормально, я думаю).

Я использую php7.2-fpm в Ubuntu 18.04, «installer.php» находится в / var / www / rocketstack /, имеет разрешение 644. cgi.fix_pathinfo=0 устанавливается в php.ini.
Для настройки среды я использовал это руководство: https://www.wpintense.com/2018/10/20/installing-the-fastest-wordpress-stack-ubuntu-18-mysql-8/

Вот мой файл /etc/sites-available/rocketstack.conf

Как я могу это исправить? Я потерял так много часов на этом! И все же это должно быть так просто! огромное спасибо

# This config file uses nginx fastcgi-cache
fastcgi_cache_path /var/www/cache levels=1:2 keys_zone=rocketstack:100m inactive=60m;

server {
listen 80;
listen [::]:80;
server_name _;

root /var/www/rocketstack;

index index.php index.htm index.html;

access_log /var/log/nginx/rocketstack_access.log;
error_log /var/log/nginx/rocketstack_error.log;

include snippets/acme-challenge.conf;

# Exclusions
include snippets/exclusions.conf;

# Security
include snippets/security.conf;

# Static Content
include snippets/static-files.conf;

# Fastcgi cache rules
include snippets/fastcgi-cache.conf;

include snippets/limits.conf;

include snippets/nginx-cloudflare.conf;

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

location ~ (^|/)\. {
return 403;
}
location ~/installer.php {
root /var/www/rocketstack/;
fastcgi_index  installer.php;
fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
include snippets/fastcgi-params.conf;
include fastcgi.conf;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
}

location ~ \.php$ {
try_files $uri =404;
include snippets/fastcgi-params.conf;
fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;

# Skip cache based on rules in snippets/fastcgi-cache.conf.
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;

# Define memory zone for caching. Should match key_zone in fastcgi_cache_path above.
fastcgi_cache rocketstack;

# Define caching time.
fastcgi_cache_valid 60m;
#increase timeouts
fastcgi_read_timeout 6000;
fastcgi_connect_timeout 6000;
fastcgi_send_timeout 6000;
proxy_read_timeout 6000;
proxy_connect_timeout 6000;
proxy_send_timeout 6000;
send_timeout 6000;

#these lines should be the ones to allow Cloudflare Flexible SSL to be used so the server does not need to decrypt SSL
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-NginX-Proxy true;

}

}

server {
listen              443 ssl http2 default_server;
listen              [::]:443 ssl http2 default_server ;
server_name _;

root /var/www/rocketstack;

index index.php index.htm index.html;

access_log /var/log/nginx/rocketstack_ssl_access.log;
error_log /var/log/nginx/rocketstack_ssl_error.log;

#once you have SSL certificates using LetsEncrypt you can alter the paths in the two lines below to reflect your domain and uncomment the lines by removing the leading # symbol
#ssl_certificate           /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
#ssl_certificate_key       /etc/letsencrypt/live/yourdomain.com/privkey.pem;

# Exclusions
include snippets/exclusions.conf;

# Security
include snippets/security.conf;

# Static Content
include snippets/static-files.conf;

# Fastcgi cache rules
include snippets/fastcgi-cache.conf;

include snippets/limits.conf;

include snippets/nginx-cloudflare.conf;

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

location ~ \.php$ {
try_files $uri =404;
include snippets/fastcgi-params.conf;

fastcgi_pass unix:/run/php/php7.2-fpm.sock;

# Skip cache based on rules in snippets/fastcgi-cache.conf.
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;

# Define memory zone for caching. Should match key_zone in fastcgi_cache_path above.
fastcgi_cache rocketstack;

# Define caching time.
fastcgi_cache_valid 60m;
#increase timeouts
fastcgi_read_timeout 6000;
fastcgi_connect_timeout 6000;
fastcgi_send_timeout 6000;
proxy_read_timeout 6000;
proxy_connect_timeout 6000;
proxy_send_timeout 6000;
send_timeout 6000;

#these lines should be the ones to allow Cloudflare Flexible SSL to be used so the server does not need to decrypt SSL if you wish
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-NginX-Proxy true;

}

}

1

Решение

Исправлено методом проб и ошибок. Текущая настройка:

    location ~ \installer.php {
try_files $uri $uri/ /installer.php?$args;
fastcgi_index installer.php;
include snippets/fastcgi-params.conf;
fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
}

Проблема была в том, что я не говорил nginx, где выбрать installer.php, я добился этого с помощью try_files. Корневая установка в локации тоже была излишней.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector