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;
}
}
}
我昨天和今天花了一整天时间学习 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;
}
}
}