# 查看nginx版本
nginx -v
# 检查nginx配置文件语法是否正确
nginx -t
# 指定使用的配置文件
nginx -c file
# 停止
nginx -s stop
# 安全退出
nginx -s quit
# 重新加载配置文件
nginx -s reload
upstream nacos-cluster {
server 127.0.0.1:8845 weight=1;
server 127.0.0.1:8846 weight=2;
server 127.0.0.1:8847 weight=3;
}
server {
listen 80;
server_name localhost;
location /nacos {
proxy_pass http://nacos-cluster;
}
}
worker_processes
: 指定工作进程的数量,用于处理客户端请求error_log
: 指定错误日志文件的路径和级别events
: 设置事件模型,包括使用的事件驱动器和连接数http
: 指定http相关的配置选项server
: 配置虚拟主机,指定监听的IP地址和端口号location
: 配置请求匹配规则和处理方式proxy_pass
: 配置反向代理,将请求转发到指定的后端服务器root
: 指定静态文件的根目录index
: 指定默认的索引文件try_files
: 指定查找文件的规则精确匹配
: 使用=
前缀,例如location = /about
,只匹配精确路径为/about
的请求。location = /about {
# 处理/about请求的配置
}
前缀匹配
: 默认情况下,location
配置是前缀匹配,例如location /path
,匹配以/path
开头的请求。如果有多个前缀匹配,Nginx会按照配置中的顺序进行匹配,并使用第一个匹配成功的location。location /static {
# 处理以/static开头的请求
}
正则匹配
: 使用~
前缀,例如location ~ \.php$
,匹配以.php
结尾的请求。还可以使用~*
前缀进行不区分大小写的正则匹配。如果有多个正则匹配,Nginx会按照正则表达式的顺序进行匹配,并使用第一个匹配成功的location。location ~ \.php$ {
# 处理以.php结尾的请求
}
最长前缀匹配
: 使用^~
前缀,例如location ^~ /path
,匹配以/path
开头的请求,并停止匹配其他location配置。这可以用于避免正则匹配的复杂性和性能开销,同时确保某些路径具有更高的优先级。location ^~ /images/ {
# 处理以/images/开头的请求,并停止匹配其他location
}
轮询
(默认) upstream nacos {
server 127.0.0.1:8845 ;
server 127.0.0.1:8846 ;
server 127.0.0.1:8847 ;
}
weight
weight 代表权重, 默认为 1,权重越高被分配的客户端越多
upstream nacos {
server 127.0.0.1:8845 weight=1;
server 127.0.0.1:8846 weight=2;
server 127.0.0.1:8847 weight=3;
}
ip_hash
ip_hash 每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器
upstream nacos {
ip_hash;
server 127.0.0.1:8845 ;
server 127.0.0.1:8846 ;
server 127.0.0.1:8847 ;
}
fair
fair(第三方),按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream nacos {
fair;
server 127.0.0.1:8845 ;
server 127.0.0.1:8846 ;
server 127.0.0.1:8847 ;
}
Least Connections
Nginx会选择当前活动连接数最少的后端服务器来处理请求。
http {
upstream backend {
least_conn;
server backend1.example.com;
server backend2.example.com;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
}
Backup
如果所有非备份服务器都宕机或繁忙,请求将被发送到标记为backup的服务器。
http {
upstream backend {
server backend1.example.com;
server backend2.example.com backup;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
}