我昨天和今天整整一天都在学习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做它,但这很高兴。
答案 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)
这有意义吗?否则,一个可能会掩盖另一个。