nginx 入门
2024-03-17 | 2024-05-10

出现报错,nginx 的错误日志位置:

1
tail -f /var/log/nginx/error.log

静态网页

1
2
3
4
5
6
7
8
9
10
11
server{

listen 8000;
server_name localhost;

location / {
root /home/AdminLTE-3.2.0;
index index.html index2.html index3.html;
}

}

location 的运行方式有点绕。首先在浏览器输入网址,最重要的三部分:ip(域名)、端口号、路由。ip 的话,显然不需要写在配置里,因为是固定的。上面的 server_name 字段只是作为一个标识符,起区别作用。端口号对应的就是 listen。路由这部分由 location 确定。location 后面跟的就是路由,那么 nginx 服务器把 root 拼接上述的路由,得到的结果作为文件路径去硬盘里寻找文件(如 index.html)。

反向代理

反向代理本身可以视为一种基本能力,是后面的负载均衡、缓存等高级功能的前提。

1
2
3
4
5
6
7
8
9
10
11
server {

listen 8001;

server_name ruoyi.localhost;

location / {
proxy_pass http://localhost:8088;
}

}

将 8001 端口收到的请求,转发到 8088 端口。

proxy_pass 配置说明:

1
2
3
location /some/path/ {
proxy_pass http://localhost:8080;
}

如果 proxy-pass 的地址只配置到端口,不包含/或其他路径,那么 location 将被追加到转发地址中。
如上所示,访问 http://localhost/some/path/page.html 将被代理到 http://localhost:8080/some/path/page.html

1
2
3
location /some/path/ {
proxy_pass http://localhost:8080/zh-cn/;
}

如果 proxy-pass 的地址包括/或其他路径,那么/some/path 将会被替换,如上所示,访问 http://localhost/some/path/page.html 将被代理到 http://localhost:8080/zh-cn/page.html。

动静分离

动静分离是指图片、css、js 等文件的请求直接由 nginx 返回响应,而不进行转发,减少宝贵的动态服务器资源占用。

有两种动静分离的方法,第一种是把静态文件手动放到一个目录里,以后的所有静态文件请求都指向这个目录。另一种是比较熟悉的,首次请求走动态服务器,并且把文件存在特定的目录,这样也是被缓存。第二种方式避免了手动和跨服务器操作,故推荐。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
proxy_cache_path /var/cache/nginx/data keys_zone=mycache:10m;

server {

listen 8001;
server_name ruoyi.localhost;

location / {
#设置buffer
proxy_buffers 16 4k;
proxy_buffer_size 2k;
proxy_pass http://localhost:8088;

}


location ~ \.(js|css|png|jpg|gif|ico) {
#设置cache
proxy_cache mycache;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
proxy_cache_valid any 5m;

proxy_pass http://localhost:8088;
}

location = /html/ie.html {

proxy_cache mycache;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
proxy_cache_valid any 5m;

proxy_pass http://localhost:8088;
}

location ^~ /fonts/ {

proxy_cache mycache;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
proxy_cache_valid any 5m;

proxy_pass http://localhost:8088;
}

}

proxy_cache_path 规定了缓存文件存放位置。keys_zone 作为标识供 location 引用。10m 表示缓存文件大小不超过 10m。location 中的 proxy_cache_valid 规定了缓存失效时间。

负载均衡

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
upstream ruoyi-apps {
#不写,采用轮循机制
ip_hash; #可确保来自同一客户端的请求将始终定向到同一服务器
hash $request_uri consistent;
server localhost:8080;
server localhost:8088;

}

server {

listen 8003;
server_name ruoyi.loadbalance;

location / {
proxy_pass http://ruoyi-apps;
}

}