Nginx入门

nginx入门学习

Nginx入门

这里我用的Ubuntu,首先下载nginx。

1
apt install nginx

nginx主要是通过 nginx.conf 文件进行配置的,这里我们来新写一个nginx.conf文件。由此来逐渐了解nginx的使用

一些常用命令

1
2
3
4
# 修改配置后 检查 Nginx 配置文件的语法是否正确
nginx -t
# 校验通过后重载配置
nginx -s reload

1.Web服务器

Nginx 的配置是基于一套分层的块(block)结构,最核心的是 http, server, 和 location。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
events{}
http{
  #这里的server块定义的是虚拟服务器
  server:{
    listen 80; #监听80端口,因为一般浏览器默认用80端口进行请求
    server_name localhost; #填写ip地址/自己的域名
    return 200 "666"; #可以自己定义返回的内容
    #注意 这时要删掉return这一行 不然会返回 return这一行
    root /var/www/localhost; #指定网站根目录.这里会默认去找localhost文件中的index.html文件 
    #那么我们如何指定查找html文件
    index app.html; #这样就会默认找app.html文件
  }
}

我们知道一个网站有多个文件。比如css文件。但是这时你引入css文件。打开浏览器会发现css文件类型居然是text/pain.这显然是不对的

nginx中有这样一个文件mime.types文件 里面有文件类型对应的文件后缀。因此我们可以引入这个文件

1
2
3
http{
  include /etc/nginx/mime.types #这里注意写在http块里面,server块外面 相当于总配置
}

实际上nginx采用的是多文件配置。在nginx文件中有一个conf.d文件夹。里面有一个default.conf文件

1
2
3
4
5
http{
   #注意写在http里面 sever外面 相当于公共配置
   include /etc/nginx/mime.types;
   include /ect/nginx/conf.d/*.conf;#这里的*是匹配所有后缀为conf文件
}

这样我们可以把我们之前写的nginx的server块配置移动到default.conf文件中。以后我们就改这个文件就行了

2.location指令

使用location指令可以更好的指定路径

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 server:{
    listen 80;
    server_name localhost; 
    #相当于匹配路径
    location /{
      root /var/www/localhost; 
    }
    #(实际上是模糊匹配) 如果请求 localhost/apple 也一样会匹配成功 
    location /app{
      root /var/www/localhost; # ** 映射到服务器的/var/www/localhost/app/ ** 所以我们这个文件夹一定要存在
    }
  }

这里我们一定要注意location不仅匹配的uri。还会匹配对应路径的文件

有四种匹配方式

  1. location = /path: 精确匹配。只有当 URI 完全是 /path 时才匹配。优先级最高。
  2. location /path: 前缀匹配。匹配所有以 /path 开头的 URI。
  3. location ~ /regex/: 正则表达式匹配 (区分大小写)。 loaction ~/video[4-9] 相当于匹配video4 video5….
  4. location ~* /regex/: 正则表达式匹配 (不区分大小写)。

匹配优先级: 精确匹配 (=) > 前缀匹配 > 正则表达式匹配 (~, ~*)。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
server{
  #可以直接进行重写 用户访问 /temp 实际访问的服务器资源为/app/index.html
  rewrite /temp /app/index.html
  #但是这只能选择一个文件 如果要选择多个文件要用try_files
  location /{
   #实际上就是一个一个尝试往下面找 如果有就返回
   try_files $uri $uri/ =404; #这是一个很重要的配置 在配置vue .react有很重要的作用
  }
  #一下是一个vue的例子
  location /{
  #这里如果都找不到。就去找目录的index.html文件。这样就能让vue路由接管。不然页面是访问不到的。因为Vue/Reacts是单页应用 (SPA)
   try_files $uri $uri/ /index.html 
  }
}

3.反向代理

1
2
3
4
5
6
7
server{
   
  location /api {
    #这里就是将带有/api前缀的uri 转发给localhost:8123服务器
    proxy_pass localhost:8123 
  }
}

4.负载均匀

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
http{
    #这里是设置一个上游服务器(注意写到http里面,server块的外面)
	upstream backend-servers {
	#设置权重 数字越大被分配的次数就会越多
	server localhost:3000 weight 6;
	server localhsot:3001 weight 5;
}
  sever{
     #这里相当于把流量分配给上游的服务器 实际上也是代理
     location /{
       proxy_pass http://backend-servers
     }
  }
}
最后更新于 2025-07-24