Создайте uri в nginx для блога-призрака

Я пытаюсь создать блог-призрак и хочу использовать nginx для обработки входящих запросов. Блог-призрак должен быть доступен по URL-адресу внутри суб-URI, например: http://mydomain.com/blog статьи. URL-адреса вида http://mydomain.com/blog/article1

До сих пор мои попытки настроить такую ​​настройку не сработали, и я всегда получаю ошибку 404. Это мой config.js:

var path = require('path'),
    config;

config = {
    // ### Production
    // When running Ghost in the wild, use the production environment
    // Configure your URL and mail settings here
    production: {
        url: 'http://mydomain.com/blog',
        mail: {},
        database: {
            client: 'sqlite3',
            connection: {
                filename: path.join(__dirname, '/content/data/ghost.db')
            },
            debug: false
        },
        server: {
            // Host to be passed to node's `net.Server#listen()`
            host: '127.0.0.1',
            // Port to be passed to node's `net.Server#listen()`, for iisnode set this to `process.env.PORT`
            port: '2368'
        }
    }
}
// Export config
module.exports = config;

И это моя конфигурация nginx:

server {
    listen 0.0.0.0:80;
    server_name mydomain.com;
    access_log /var/log/nginx/mydomain-com.log;

    location /blog {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header HOST $http_host;
        proxy_set_header X-NginX-Proxy true;

        proxy_pass http://127.0.0.1:2368;
        proxy_redirect off;
    }
}

Может ли кто-нибудь сказать мне, что я делаю неправильно?


person keyboardsamurai    schedule 06.11.2013    source источник


Ответы (3)


Этот location работает для доступа к блогу по пути:

location ~^/blog(?<tail>.+$) {
   # more proxy stuff
   proxy_pass http://localhost:2368$tail;
}

Другое дело его производительность.

Но как вы, наверное, читали в Призраке config.js:

URL-адрес для использования при предоставлении ссылок на сайт, например. в RSS и электронной почте. не должен содержать суффикс пути после имени хоста - "подкаталоги" (пока) не поддерживаются!

В моих тестах домашняя страница блога нормально работала с /blog, но содержала неверные ссылки на статьи без начального /blog. Но если вы перейдете к статье, а затем отредактируете ее URL-адрес в адресной строке, вставив /blog, это тоже сработает.

Так что, я думаю, вам нужно немного взломать Ghost или немного подождать следующей версии.

person djromero    schedule 20.11.2013

возможно, вы можете использовать поддомен для этого. и вам не нужно менять какой-либо конфиг о Ghost.

upstream frontends {
    ip_hash;
    server 127.0.0.1:2368;
}

server {
    listen       80;
    server_name  blog.mydomain.com;

location / {
    proxy_pass http://frontends;
}

server {
    listen       80;
    server_name  mydomain.com;

    location / {
    root   html;
    index  index.html index.htm;
}
person mescalin    schedule 13.11.2013

Поддержка подкаталогов была реализована только в версии 0.4 Ghost, если вы пробовали это с предыдущей версией, это, вероятно, не сработало, по крайней мере, теперь это должно быть намного проще, вы можете просто проксировать URL-адреса 1 к 1. на ваш внутренний сервер.

person Alex Lehmann    schedule 01.02.2014