nginx子域配置example.com/blog

时间:2018-07-14 21:50:54

标签: node.js nginx subdomain ubuntu-16.04 ghost

我昨天和今天整整一天都在学习nginx的工作方式,我有两个不同的域,一个是Ghost博客平台,另一个是静态页面(未来的NodeJS应用),现在我试图设置子域,但是我有点沮丧,因为我感觉自己快要到了,但是它不起作用...这是我当前的设置:

#Main Domain
server {
    listen 80;
    listen [::]:80;

    server_name example.com;
    root /var/www/portfolio;
    index index.html;

    location / {
        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://127.0.0.1:2222;

    }

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

    client_max_body_size 50m;
}


#Sub domain
server {
    listen 80;
    listen [::]:80;

    server_name example.com/blog;
    root /var/www/ghost/system/nginx-root;

    location / {
        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://127.0.0.1:2368;

    }

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

    client_max_body_size 50m;
}

这个想法是创建mysite.com/blog,其中mysite最终将是一个nodejs应用程序,以后连接该路由的问题将是另一个问题,但是……一次大声笑,我如何建立该子域? 如果我将配置文件分成一个单独的文件,则其他域将运行:/

谢谢

编辑:我发现使用AWS上S3中的存储桶可以完成该操作,但是现在我不需要jeje做它,但这很高兴。

2 个答案:

答案 0 :(得分:1)

注意:这不是一个完整的答案,您可能需要修补一下

正如@Jonathan所提到的,从nginx的角度来看,这是一个站点,但是您需要nginx来以不同的方式处理这两个位置。

这是它的样子

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

    server_name example.com;
    root /var/www/portfolio;
    index index.html;
    client_max_body_size 50m;

    location / {
      # your normal location settings
    }


    # your blog is defined here
    location /blog {
      root /var/www/ghost/system/nginx-root;

      # You'll probably need to do a rewrite here, because a
      # /blog/article needs to be passed as `/article` to the
      # app server

      # rewrite ^/blog/(.*) $1;

      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://127.0.0.1:2368;
    }
  }
}

答案 1 :(得分:0)

首先:它不是子域,而是名为blog的子文件夹。

如果要运行两个应用程序,其中一个出现在子文件夹中,则可以执行以下操作

定义两个上游/代理,将它们传递到不同的端口

然后将它们保存在相同的配置文件中

有两个位置块(location /和location / blog)

这有意义吗?否则,一个可能会掩盖另一个。