Индекс NGINX 404 не найден

Я только что установил Ghost Blog на новый сервер под управлением NGINX. Файл Ghost config.json указывает на правильный каталог / блог, и блог прекрасно загружается, когда я его посещаю.

Что не работает, так это когда я удаляю / blog из URL, меня перенаправляют на страницу 404. Я проверил файл с поддержкой сайтов, который выглядит следующим образом:

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

server_name *********;
root /var/www/ghost/system/nginx-root;

location ^~ /blog {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://*********:2368;
proxy_redirect off;
}

location ~ /.well-known {
allow all;
}

client_max_body_size 50m;

Но я не совсем уверен, что мне нужно изменить, чтобы не получить ошибку 404. У меня есть пример файла .php, который должен загружаться, но это не так.

Я всегда использовал приложение Digital Ocean One-Click Ghost, но на этот раз я хотел использовать Ghost CLI. У меня такое чувство, что я что-то пропустил.

0

Решение

следующие могут снять некоторые ваши ограничения, но это будет работать

server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 301 https://$host$request_uri;
}

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

ssl on;
ssl_certificate /etc/letsencrypt/live/thedomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/thedomain.com/privkey.pem;

access_log /var/log/nginx/thedomain.access.log;
error_log  /var/log/nginx/thedomain.error.log;

root            /var/www/thedomain;

index           index.html;

gzip on;
gzip_proxied any;
gzip_types text/css text/javascript text/xml text/plain application/javascript application/x-javascript application/json;

location / {
try_files   $uri $uri/ =404;
}
}

Вы должны убедиться, что все файлы ssl есть и разрешены для доступа через www-данные.

Если вам нужно запустить certbot в первый раз, просто код 443 в блоке 80 без операторов ssl

0

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

Размещенная вами конфигурация nginx имеет дело только с Ghost.

Вы настроили сервер, отвечающий на порт 80, установили для root значение nginx-root Ghost и создали 2 блока местоположения. Один для /blog/ и служит призраком, вторым .well-known Блок предназначен для обработки генерации SSL-сертификатов с помощью letsencrypt.

Я не эксперт по настройке nginx для PHP, но это руководство от Digital Ocean а также этот вопрос охватывает много деталей.

Я думаю, у вас есть несколько вариантов:

  1. Установите индекс как index.php
  2. Добавить новый блок местоположения для / который обслуживает файлы php
  3. Добавить блок для обработки всех файлов PHP

Я полагаю, что добавление нового блока местоположения, подобного этому, будет означать, что любые ваши файлы .php будут вызываться всегда, если путь в URL совпадает.

location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}

Но значение fastcgi_pass будет зависеть от того, как вы настроили PHP в вашей системе.

При этом переход к /index.php должен работать.

настройка index: index.php будет означать, что / карты для /index.php Я не уверен, что это помешает Ghost, если это произойдет, вам понадобится конкретный location / {} блок вместо устанавливаемого индекса.

0

По вопросам рекламы [email protected]