Nginx常用配置说明
程序员文章站
2024-02-20 19:54:10
...
一、指令说明
Nginx指令 | 说明 |
worker_processes | 配置Nginx的工作进程数,一般为Cpu总核心数或者总核心数的两倍 |
events | 控制Nginx处理连接的方式 |
http | Nginx 处理 http 请求的主要配置块,大多数配置都在这里面进行 |
worker_connections | 配置 Nginx 允许单个进程并发连接的最大请求数 |
include | 用于引入配置文件 |
default_type | 设置默认文件类型 |
sendfile | 默认值为 on ,表示开启高效文件传输模式 |
keepalive_timeout | 设置长连接超时时间(单位:秒) |
server | Nginx 中主机的配置块,可用于配置多个虚拟主机 |
listem | 监听端口,默认监听 80 端口 |
server_name |
设置主机域名;除了可以精准配置方式外,还可以利用通配符(*)与正则表达式设置域名,实现域名的泛解析 。如:server name *.test.com |
location | server 中对应目录级别的控制块 ,可以有多个 |
root | 设置主机站点根目录地址,使用反向代理的时候可以用作设置缓存目录等 |
index | 指定默认索引文件(首页) |
error_page | 自定义错误页面 |
error_log |
存放错误日志(参数1:存在路径;参数2:日志等级);debug、info、notice、warn、error 和 crit ,日志记录详细程度依次递减, debug 记录的内容最详细, crit 记录的内容最简洁。 error_log 指令可以在main、http、server 、location 块中设置,配置方式相同。 关闭日志: error_log /dev/null ; |
autoindex | 开启目录列表功能;在 http块中,表示用于对所有站点都有效 ;在server 块中,表示对指定站点有效;在location块中,表示对某个目录起作用。 |
autoindex_exact_size | 设置精准显示文件大小:on/off |
autoindex_localtime | 文件最后修改时间格式:on/off |
proxy_set_header | 在将客户端请求发送给后端服务器之前,更改来自客户端的请求头信息 |
proxy_connect_timeout | 配置 Nginx 与后端代理服务器尝试建立连接的超时时间 |
proxy_read_timeout | 配置 Nginx 向后端服务器组发出 read 请求后,等待响应的超时时间 |
proxy_send_timeout | 配置 Nginx 向后端服务器组发出 write 请求后,等待响应的超时时间 |
proxy_redirect | 用于修改后端服务器返回的响应头中的 Location 和 Refresh |
upstream web_server | 负载均衡配置模块 |
proxy_store | 用于开启本地缓存 |
proxy_store_access | 设置缓存的读写规则 |
proxy_temp_path | 设置反向代理时接收的数据临时存储文件的目录 |
负载均衡参数 | 参数值 |
weight | 权值,权值越高则被分配到的概率越大;server 192.168. 78.128 weight=1 max_fails=1 fail_timeout=2 ; |
max_fails | 允许请求失败的次数,默认为i。当超过最大次数时,返回 proxy_ next_ upstream 指令定义的错误 |
fail_timeout | 在经历了max_fails次失败后,暂停服务的时间 。 且在实际应用中 max_fails 一般与 fail_ timeout 一起使用 |
backup | 预留的备份机器 |
down | 表示当前的 server 暂时不参与负载均衡 |
二、location匹配规则
location 可以同时定义多个,当 一个配置文件中同时出现多个 location 时,普通location 之间遵循“最大前缀匹配”原则 。 通俗地讲就是,匹配度最高的 location 将会执行。
当最大前缀 location 与正则 location 同时存在时,如果正则 location 匹配成功,则不会执行最大前缀 location
前缀 | 说明(优先级1为最高) |
/ | 最大前缀匹配(优先级:4) |
= | 根据其后的指定模式进行精准匹配 。例:在访问时要与 /html/aaa/index.html 完全一致才会执行其后的指令块(优先级:1) |
~ | 正则匹配:使用正则表达式完成 locat ion 的匹配,区分大小写(优先级:3) |
~* | 正则匹配:使用正则表达式完成 location 的匹配,不区分大小写(优先级:3) |
^~ | 非正则匹配:不使用正则表达式,完成以指定模式开头的 location 匹配(优先级:2) |
@ | 用于定义一个 location 块,且该块不能被外部客户端所访问,只能被Nginx 内部配置指令所访问 |
worker_processes 1;
events{
worker_connections 1024;
}
http{
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 60;
server{
listem 80; #监听80端口号
server_name test.com; #监听域名
location / {
root cache; #缓存目录
proxy_store on; #用于开启本地缓存
proxy_store_access user:rw group:rw all:r; #设置缓存的读写规则
proxy_temp_path cache_tmp; #设置反向代理时接收的数据临时存储文件的目录
#利用正则表达式匹配缓存目录中的文件、目录或符号链接是存在
#!-e 表示检查一个文件、目 录或符号链接是否存在
#$request_filename 表示当前请求的文件路径或 URI
if(!-e $request_filename){
proxy_pass http://192.168.78.128;#域名test.com的请求全部转发到Web服务器 192.168.78.128
}
proxy_set_header Host $host; #第1个参数用于表示字段名称,第2个参数表示字段值
proxy_set_header X-Real- IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /img/ {
root /image; #收到"/img/test.png"请求时,将请求映射为"/image/test.png"
alias /image/; #收到"/img/test.png"请求时,将请求映射为"/image/img/test.png"
index index.html #设置首页文件
}
location =/js{ #精准匹配:用户访问的 URI 与指定的 URI 完全一致的情况
allow 192.168.78.129; #允许此ip地址访问
}
location ~\.html$ { #表示匹配网站根目录下以. html 结尾的文件
allow all; #允许所有用户访问
}
location ~^/aaa/.*\ .html$ { #表示匹配网站根目录下 aaa 目录中以. html 结尾的文件
deny all;
}
error_page 502 504 500 /error.html; #当http响应码为502 504 500时跳转到error.html
error_page 404=200 /404.html ; #将404响应码改为200,并跳转至404.html
location=/50x.html{
}
#权重配置负载均衡
upstream web_server {
server 192.168.1.1 weight=1; # 权重为1
server 192.168.1.2 weight=3; # 权重为3
}
#ip_hash配置负载均衡
upstream web_server {
ip_hash;
server 192.168.1.1;
server 192.168.1.2;
}
#还可以利用第三方模块实现,这里不多做讲解
}
allow 192.168.78.128; #允许此ip地址访问
deny all; #禁止所有客户端访问
error_log logs/error.log notice #错误日志存放,日志等级为notice
}