nginx 子域配置示例。com/blog

nginx subdomain configuration example.com/blog

我昨天和今天花了一整天时间学习 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 中的存储桶我可以完成它,但现在我不需要它来完成我正在做的事情,但很高兴知道。

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

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

定义两个上游/代理将它们传递到

的不同端口

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

有两个位置块(location / 和 location /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/(.*) ;

      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;
    }
  }
}