Node.js nginx子域配置示例.com/blog

Node.js nginx子域配置示例.com/blog,node.js,nginx,subdomain,ubuntu-16.04,ghost,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 in

我昨天和今天花了一整天的时间学习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应用程序,稍后链接路线将是另一个问题,但。。。一次一个lol,我如何建立那个子域? 如果我将配置文件分离成一个单独的文件,我将使另一个域工作:/

谢谢


编辑:我发现在AWS的S3中使用bucket可以实现这一点,但现在我不需要它来完成我的工作,jeje,但知道这一点很好。

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

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

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

然后将它们放在同一个配置文件中

有两个位置块(位置/和位置/博客)


这有意义吗?否则,其中一个可能会影响另一个。

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

正如@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;
    }
  }
}

但它不在子文件夹中,现在它们有不同的文件夹:都在www中,所以在/var/www中我有site1Folder和site2Folder。我应该把一个放在另一个里面吗?不,它们在哪里对nginx没有关系,它们需要被传递到应用程序运行的端口。我如何定义两个上游,我选择随机端口?例如:代理通行证;还有你的通行证?您需要在2222上运行节点应用程序(根据当前配置),在另一个上运行节点/重影。与例如php不同,php中的文件可以直接放在那里等待服务器执行它们。这有意义吗?如果我像这样定义端口:proxy\u pass;上面写着:502坏网关。我必须在命令行中更改某些内容吗?打开那个端口还是别的什么?如果是,怎么做?sudo ufw allow 2222?example.com/blog不是子域。。blog.example.com将是您需要做的是创建一个
example.com
服务器块,然后定义
location/blog
,并在传递到应用服务器之前进行重写。我将更好地研究nginx如何工作,因为我无法让它这样工作。谢谢你