Я только что установил 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. У меня такое чувство, что я что-то пропустил.
следующие могут снять некоторые ваши ограничения, но это будет работать
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
Размещенная вами конфигурация nginx имеет дело только с Ghost.
Вы настроили сервер, отвечающий на порт 80, установили для root значение nginx-root Ghost и создали 2 блока местоположения. Один для /blog/
и служит призраком, вторым .well-known
Блок предназначен для обработки генерации SSL-сертификатов с помощью letsencrypt.
Я не эксперт по настройке nginx для PHP, но это руководство от Digital Ocean а также этот вопрос охватывает много деталей.
Я думаю, у вас есть несколько вариантов:
/
который обслуживает файлы 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 / {}
блок вместо устанавливаемого индекса.