Я использую призрак в качестве модуля npm в существующем приложении node, в основном это дочернее приложение.
Итак, мое приложение работает на порту 9200, для этого я настроил обратный прокси-сервер.
location / {
proxy_pass http://localhost:9200;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
Затем я настроил свое приложение-призрак внутри своего основного приложения.
// server.js
ghost().then(function (ghostServer) {
app.use(ghostServer.config.paths.subdir, ghostServer.rootApp);
ghostServer.start(app);
});
// node_modules/ghost/config.js
production: {
url: 'http://example.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'
},
paths: {
contentPath: path.join(__dirname, '/blog/')
}
}
Так как Ghost обрабатывает маршрут /blog
, путь ресурсов предполагает, что /blog
будет в маршруте, поэтому мне пришлось изменить его с /content
.
Это отлично работает на http://example.com:9200/blog
, но после настройки обратного прокси для /blog
location /blog {
proxy_pass http://localhost:9200;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
Затем, пытаясь перейти к http://example.com/blog
, все, что я могу получить, это html, активы не обслуживаются по этому маршруту, я подозреваю, что местоположение должно включать подстановочный знак, например location /blog/*
?