在介绍放下之前先了解Nginx的配置文件 nginx.conf ,默认的配置文件如下(只关注未被注释的server块即可):

...

server {
listen 80;
server_name localhost;


location / {
root html;
index index.html index.htm;
}


#error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}

...


  • 80是Nginx的默认监听端口

  • server_name可以写公网ip,也可以写域名,当访问这个server_name时,就会进入Linux根目录 location / 下的内容。

例如,访问 server_name,真实的访问路径就是server_name:80,而在linux中的绝对路径就是 /html/index.html



根目录 / 只能有一个,但是可以自己添加多个普通目录,比如我再添加一个 location

location /demo1 {
root /data/MyProject/html;
# index index.html;
}

这样当在浏览器中输入 server_name/demo1,就会被这个location匹配,跳转到物理内存 /data/MyProject/html/demo1/index.html 寻找静态资源。拼接的方法是 root+location+index

如果想自定义/data/MyProject/html/demo1/目录下被搜索的文件,比如/data/MyProject/html/demo1/test.js,就删掉index index.html;这行,在浏览器中输入 server_name/demo1/test.js即可。


注意:更新完nginx.conf后一定要重新加载配置并重启nginx服务后才能生效!


回归正题

总结来说,如果想在浏览器输入 server_name/demo1 来访问静态项目,总共需要三步。

  • 把项目文件夹命名为 demo1,然后将之放置在 /data/MyProject/html/ 文件夹下,看需求决定是否设置默认的访问对象index.html

  • 添加上述 location 到Nginx配置文件。

  • 重新加载配置并重启Nginx。

    sudo systemctl reload nginx    # 重新加载配置,一般是在修改过 nginx 配置文件时使用。
    sudo systemctl restart nginx # 重启 nginx 服务



由上可知,同一 server_name 下的多哥项目,可以用多个 location块 区分。

同理,如果想用想在同一台服务器上用多个域名访问多个项目,就可以用多个 server块 来实现。