参考文档:nginx中文网

1.主模块的配置

默认主模块的配置:

centos nginx用户 nginx配置用户_正则表达式

# 指定 Nginx Worker 进程运行用户以及用户组,nginx的进程会以这个帐户来执行,主要是权限控制等,第一个参数是用户,第二个参数是用户组,可省略。
user www users; 

# nginx开启的worker进程数,建议为cpu的核数,默认是1
worker_processes 5;

# 指定nginx进程运行文件存放地址
pid /var/log/nginx.pid;

# 改指令是包含的意思,当主配置文件太多时,可以写到其他文件中,然后包含进来,可以具体指定或指定某一目录下的所有.conf文件
include vhosts/test.conf;
include vhosts/*.conf;

2.事件模块的配置

默认事件模块的配置:

centos nginx用户 nginx配置用户_nginx_02

# 一个进程最大的连接数
#最大用户数:max_clients = worker_processes * worker_connections
#反向代理最大用户数:max_clients = worker_processes * worker_connections / 4
worker_connections  1024;

#惊群问题:当一个新连接到达时,如果激活了accept_mutex,那么多个Worker将以串行方式来处理,其中有一个Worker会被唤醒,其他的Worker继续保持休眠状态;如果没有激活accept_mutex,那么所有的Worker都会被唤醒,不过只有一个Worker能获取新连接,其它的Worker会重新进入休眠状态。默认缺省开启
accept_mutex on; 

#同时接受多个新网络连接请求的功能,默认关闭
multi_accept on

3.http模块的配置

基本的一些配置
#文件扩展名与文件类型映射表
include mime.types;

# 指定文件类型,可以查看mime.types中的所有类型,默认为application/octet-stream,可以在location里面指定需要的
default_type  application/octet-stream;

# 允许sendfile方式传输文件,一般不需要关注
sendfile on;

# listen用于监听服务器端口
# listen address[:port] #只监听指定IP的端口
# listen port #只监听主机上所有的ip端口
listen 80;

# 主要是跟主机名,名称可以是通配符和正则表达式,当nginx收到一个请求时,会取出server的值,而后跟众server_name进行比较
# 先做精确匹配: www.test.com
# 通配符"*"匹配  www.test.*
# 正则匹配 ~^www\d+\.test\.com$
server_name www.test.com;

# 保持连接的时长
keepalive_timeout 50
alias和root的配置(用来指定请求资源的真实路径)

测试:请求机器下/data/test1/2021-01-16_134232.png,两种配置

#alias的配置方式,请求:http://192.168.175.163/test2/2021-01-16_134232.png
        location /test2/ {
            alias   /data/test1/;
            #index  index.html index.htm;
           # autoindex      on;
        }
#rootd的配置方式,请求:http://192.168.175.163/test1/2021-01-16_134232.png
        location /test1/ {
            root   /data;
            #index  index.html index.htm;
           # autoindex      on;
        }

两则对比

alias

root

必须以“/”结尾

都可,不影响

其请求资源路径不与location做拼接

与location路径作拼接

只能写在location中

http,server,location

index配置(网站初始页)
# 用于指定网页初始页,可以跟多个,在显示时一个一个找,找到即显示
index index.html index.htm aa.html

在/data/test1/下有index.html 和aa.html,配置规则如下:当访问http://192.168.175,163时,会显示index.html页面的内容,删除index.html会显示aa.html里面的内容

location / {
            root   /data/test1;
            index  index.html index.htm aa.html;
           # autoindex      on;
        }
关于文件上传大小的配置
# 默认是1m,可以在http。 server location里面设置
client_max_body_size  500m;
location配置语法

匹配的优先级:首先精确匹配 ,其次以xx开头匹配^~,然后是按文件中顺序的正则匹配,最后是交给 / 通用匹配

  • =:精确匹配
  • ~:正则表达式模式匹配,匹配时区分字符大小写
  • ~*:正则表达式模式匹配,匹配时忽略字符大小写
  • ^~:只需要前半部分与uri匹配即可,不检查正则表达式
# 默认配置,优先级最低
location / {
    .....
}

location ~*  \.(jpg|png|gif)$ {
  ...
}

location ~.*  \.(css|js)? $ {
...
}
反向代理相关的一些配置
# 代理的后端服务器的url
 proxy_pass URL;
 
# 设置超时时间,默认60s
proxy_connect_timeout 60;
负载均衡的一些配置
# 负载均衡的配置
upstream backend  {
  server backend1.example.com weight=10;
  server backend2.example.com:8080;
}
 
server {
  location / {
    proxy_pass  http://backend;
  }
}

nginx负载均衡的策略:

  1. 轮询(默认):如果其中某个服务器挂掉,则剔除轮询
  2. 权重(weight):默认为1,数值越大,分配的越多,服务器性能不均使用,实现
server backend1.example.com weight=10;
  1. ip_hash::根据请求的访问电脑ip的hash去分配,固定访问一台服务器,可解决session问题
upstream backend  {
  ip_hash;
  server backend1.example.com weight=10;
  server backend2.example.com:8080;
}

4.fair:按响应时间分配,响应短的优先分配

upstream backend  {
  server backend1.example.com weight=10;
  server backend2.example.com:8080;
  fair;
}
静态资源的一些配置
# 设置静态资源的过期时间
expire 5h;

# 自动生成目录列表,当访问资源时,列举出文件目录
autoindex on;

# 显示文件大小,单位(B,KB, MB 或 GB)
autoindex_exact_size on;