Nginx 配置和常用命令

本文最后更新于:2023年7月12日 晚上

Nginx 是一款轻量级的 Web 服务器,主打的功能是反向代理。在前后端分离开发为常态的今天,它也经常被用于部署前端项目。

Nginx 配置和常用命令

这几个 Nginx 命令对于入门来说足够了:

  • 启动 nginx:nginx
  • 关闭 nginx:nginx -s stop
  • 热重载配置文件: nginx -s reload
  • 检查配置文件正确性:nginx -t

Nginx 配置

Nginx 的配置文件位于nginx/conf/nginx.conf中,使用 vim 打开后如下:

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
#全局块,修改和 nginx 运行相关的全局配置

worker_processes 1;

#event块,修改和网络连接相关的配置
events {
worker_connections 1024;
}

#http块,配置缓存、代理、日志等
http {

#http全局块
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;

#server块
server {
#server全局块
listen 8000; #监听端口
server_name localhost;
#location块
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
#这边可以有多个server块
server {
...
}
}

我们要做的大部分修改都在 http 块之内。

1. 配置反向代理

反向代理就是用 nginx 来代理我们的服务器,我们所有的请求都发到 nginx,然后由 nginx 来转发到它所代理的服务器。要配置反向代理,我们需要在 http 块中添加一个 server 块,设置它监听的端口,然后在 location 块中设置要转发的具体服务器。

1
2
3
4
5
6
7
8
9
server {
#server全局块
listen 8082; #监听端口
server_name localhost;
#location块
location / {
proxy_pass 192.168.19.101:8080 # 转发到这台服务器
}
}

假设 nginx 服务器的 IP 是 192.168.19.100,在完成上述配置后,我们访问 192.168.19.100:8082 时,请求就会由 nginx 转发到 192.168.19.101:8080 中。

2. 配置负载均衡

负载均衡其实也就是反向代理。通过反向代理,将请求分散到各台服务器,就实现了负载均衡,避免了大量请求压到一台服务器上造成的隐患。配置负载均衡,也只需要增加 server 块的内容。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
upstream targetserver{
server 192.168.19.101:8080;
server 192.168.19.102:8080;
}

server {
#server全局块
listen 8888; #监听端口
server_name localhost;
#location块
location / {
proxy_pass targetserver # 转发到这台服务器
}
}

我们在 http 全局快中,配置了upstream targetserver,这一步的作用是将发送给 nginx 服务器 8888 端口的请求,分散到 targerserver 块中的服务器。默认的分配算法是轮询,也就是每台服务器轮流分配请求。还有一下这些算法:

  • weight:加权轮询算法。和轮询类似,只是权值大的服务器,分配的请求更多

    1
    2
    3
    4
    upstream bakend {  
    server 192.168.0.1 weight=10; # 这台服务器将收到大致两倍于下面服务器的请求
    server 192.168.0.2 weight=5;
    }
  • ip_hash:ip hash算法,按照访问者的 ip hash 值进行分配服务器,这样使同一个 ip 访问到一台固定的服务器,避免了 session 丢失的问题

    1
    2
    3
    4
    5
    upstream bakend {  
    ip_hash;
    server 192.168.0.1:88;
    server 192.168.0.2:80;
    }
  • fair:最快响应,响应时间越快的服务器收到的请求越多

    1
    2
    3
    4
    5
    6
    upstream fontech { 
    server 192.168.0.1;
    server 192.168.0.2;
    server 192.168.0.3;
    fair;
    }
  • url_hash,通过 url hash 值分配服务器,相同的 url 可以被固定到某台服务器上

    1
    2
    3
    4
    5
    6
    upstream fontech {
    hash $request_uri;
    server 192.168.0.1;
    server 192.168.0.2;
    server 192.168.0.3;
    }
  • less_conn:最少连接算法,连接最少的服务器优先分配请求

    1
    2
    3
    4
    5
    upstream bakend{
    least_conn;
    server localhost:10001 weight=1;
    server localhost:10002 weight=2;
    }

Nginx 配置和常用命令
https://travelerentity.github.io/2023/Nginx-配置和常用命令/
作者
LinYun
发布于
2023年7月12日
许可协议