0%

nginx | 多站点配置

目的是

我有一个域名,比如 xxx.com,我要求

  • xxx.com/ 访问主站项目
  • xxx.com/Static/aaa 访问某一个目录下的其他项目

这次用的是 nginxdefault 配置,关于这个配置请查看

这里直接贴配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
server {
listen 80 default_server;
listen [::]:80 default_server;

root /var/www/html;
#index index.html index.htm index.nginx-debian.html;

server_name _;

absolute_redirect off;

location /Static/lumi {
alias /home/thlm/Static/lumi;
index index.html;
try_files $uri $uri/ /Static/lumi;
#error_page 404 /Static/lumi;
}
}

这里说一下相关的配置,我电脑 nginx1.18.0

absolute_redirect

这个是表明,重定向是要带端口号。

如果,没有这句话,那么 404 重定向的时候会把端口去掉。

根据资料中说

新版本nginx(≥1.11.8)

1
absolute_redirect off;

旧版本nginx(<1.11.8)【未测试】

1
port_in_redirect off;

/Static/lumi

上面是说,当访问 /Static/lumi 的时候这个 uri 的时候,走的是下面的配置。

其中,alias 将资源重定向到 /home/thlm/Static/lumi 文件夹下。

默认资源是在 /var/www/html

index 表明告诉你,主页是什么?比如,这个配置,相当于主页是 /Static/lumi/index.html

剩下的

1
2
3
try_files $uri $uri/ /Static/lumi;
#error_page 404 /Static/lumi;
#error_page 404 = 301 /Static/lumi;

都差不多,当有一个 uri 寻找不到资源的时候,就返回主页。

需要注意的是,下面的写法都是错误的

1
2
try_files $uri $uri/ /Static/lumi/index.html;
try_files $uri $uri/ index.html;

第一种,index.html 并不存在,返回的页面是空,第二种其实是将资源指向了 /var/www/html/index.html

请我喝杯咖啡吧~