在nginx中为鬼博客创建uri

时间:2013-11-06 16:44:03

标签: node.js nginx ghost-blog

我正在尝试设置一个幽灵博客,并希望使用nginx来处理传入的请求。鬼博客应该可以通过子uri内的网址访问:http://mydomain.com/blog文章会有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;
    }
}

有谁能告诉我我做错了什么?

3 个答案:

答案 0 :(得分:1)

location可以通过以下路径访问博客:

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

它的表现是另一回事。

但是你可能在幽灵config.js中读到了:

  

提供网站链接时使用的网址,例如在RSS和电子邮件中。   主机名后不得包含路径后缀 - “subdirs”尚未支持!

在我的测试中,博客主页与/blog一起正常工作,但它包含文章的错误链接,没有前导/blog。但是,如果您导航到某篇文章,然后在插入/blog的位置栏上修改其网址,那么它也可以。

所以我猜你需要在Ghost上进行一些攻击或者等待下一个版本。

答案 1 :(得分:0)

也许您可以使用子域来执行此操作。并且您无需更改任何有关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;
}

答案 2 :(得分:0)

对子目录的支持只在Ghost的0.4版本中实现,如果你之前尝试过它,它可能不起作用,至少它现在应该更容易,你可以只做1到1代理您的后端服务器的网址。