常用配置项
在工作中,我们与 Nginx 打交道更多的是通过其配置文件来进行。那么掌握这些配置项各自的作用就很有必要了。
首先,nginx.conf 的内容通常是这样的:
...
... #核心摸块
events { #事件模块
...
}
http { # http 模块
server { # server块
location [PATTERN] { # location块
...
}
location [PATTERN] {
...
}
}
server {
...
}
}
mail { # mail 模块
server { # server块
...
}
}
我们依次看一下每个模块一般有哪些配置项:
user admin; #配置用户或者组。
worker_processes 4; #允许生成的进程数,默认为1
pid /nginx/pid/nginx.pid; #指定 nginx 进程运行文件存放地址
error_log log/error.log debug; #错误日志路径,级别。
events {
accept_mutex on; #设置网路连接序列化,防止惊群现象发生,默认为on
multi_accept on; #设置一个进程是否同时接受多个网络连接,默认为off
use epoll; #事件驱动模型select|poll|kqueue|epoll|resig
worker_connections 1024; #最大连接数,默认为512
}
http {
include mime.types; #文件扩展名与文件类型映射表
default_type application/octet-stream; #默认文件类型,默认为text/plain
access_log off; #取消服务日志
sendfile on; #允许 sendfile 方式传输文件,默认为off,可以在http块,server块,location块。
sendfile_max_chunk 100k; #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。
keepalive_timeout 65; #连接超时时间,默认为75s,可以在http,server,location块。
server
{
keepalive_requests 120; #单连接请求上限次数。
listen 80; #监听端口
server_name 127.0.0.1; #监听地址
index index.html index.htm index.php;
root your_path; #根目录
location ~ \.php$
{
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
#fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
}
}
常用的配置项大致这些,对于不同的业务场景,有的需要额外的其他配置项,这里不做展开。
http 配置里有 location 这一项,它是用来根据请求中的 uri 来为其匹配相应的处理规则。
location = / {
# 精确匹配 / ,主机名后面不能带任何字符串
[ config A ]
}
location / {
# 因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求
# 但是正则和最长字符串会优先匹配
[ config B ]
}
location /documents/ {
# 匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索
# 只有后面的正则表达式没有匹配到时,这一条才会采用这一条
[ config C ]
}
location ~ /documents/Abc {
# 匹配任何以 /documents/Abc 开头的地址,匹配符合以后,还要继续往下搜索
# 只有后面的正则表达式没有匹配到时,这一条才会采用这一条
[ config CC ]
}
location ^~ /images/ {
# 匹配任何以 /images/ 开头的地址,匹配符合以后,停止往下搜索正则,采用这一条。
[ config D ]
}
location ~* \.(gif|jpg|jpeg)$ {
# 匹配所有以 gif,jpg或jpeg 结尾的请求
# 然而,所有请求 /images/ 下的图片会被 config D 处理,因为 ^~ 到达不了这一条正则
[ config E ]
}
location /images/ {
# 字符匹配到 /images/,继续往下,会发现 ^~ 存在
[ config F ]
}
location /images/abc {
# 最长字符匹配到 /images/abc,继续往下,会发现 ^~ 存在
# F与G的放置顺序是没有关系的
[ config G ]
}
location ~ /images/abc/ {
# 只有去掉 config D 才有效:先最长匹配 config G 开头的地址,继续往下搜索,匹配到这一条正则,采用
[ config H ]
}
正则查找优先级从高到低依次如下:
“ = ” 开头表示精确匹配,如 A 中只匹配根目录结尾的请求,后面不能带任何字符串。
“ ^~ ” 开头表示uri以某个常规字符串开头,不是正则匹配
“ ~ ” 开头表示区分大小写的正则匹配;
“ ~* ”开头表示不区分大小写的正则匹配
“ / ” 通用匹配, 如果没有其它匹配,任何请求都会匹配到
Nginx 的负载均衡需要用到 upstream 模块,可通过以下配置来实现:
upstream test-upstream {
ip_hash; # 使用 ip_hash 算法分配
server 192.168.1.1; # 要分配的 ip
server 192.168.1.2;
}
server {
location / {
proxy_pass http://test-upstream;
}
}
上面的例子定义了一个 test-upstream 的负载均衡配置,通过 proxy_pass 反向代理指令将请求转发给该模块进行分配处理。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/112475.html原文链接:https://javaforall.cn