目录
安装&运行
nginx.conf 常用配置
location(server)
反向代理(server)
网络相关(http)
gzip相关(http)
FastCGI相关(http)
其他常用配置
负载均衡 - 健康检测nginx_upstream_check_module配置
安装&运行
- 安装依赖包
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
- 下载解压
cd /usr/local
wget http://nginx.org/download/nginx-1.16.0.tar.gz
tar -xvf nginx-1.16.0.tar.gz
- 编译安装
//进入目录
cd nginx-1.16.0
//执行命令 考虑到后续安装ssl证书 添加两个模块
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
//执行make命令
make
//执行make install命令
make install
- 启动&运行&关闭
cd ./nginx/sbin/nginx
1、启动:nginx
2、关闭服务:nginx -s quit
3、重启服务:nginx -s reload
nginx.conf 常用配置
location(server)
location有两种匹配规则:
- 匹配URL类型,有四种参数可选,当然也可以不带参数。
location [ = | ~ | ~* | ^~ ] uri { … }
- 命名location,用@标识,类似于定于goto语句块。
location @name { … }
【匹配指令】
-
“=”
,精确匹配,内容要同表达式完全一致才匹配成功 -
“~”
,执行正则匹配,区分大小写 -
“~*”
,执行正则匹配,忽略大小写 -
“^~”
,表示普通字符串匹配上以后不再进行正则匹配 - 不加任何规则时,默认是大小写敏感,前缀匹配,相当于加了“~”与“^~”
【“@”
,nginx内部跳转】
location /index/ {
error_page 404 @index_error;
}
location @index_error {
.....
}
#以 /index/ 开头的请求,如果链接的状态为 404。则会匹配到 @index_error 这条规则上。
【匹配优先级】
1、相同类型的表达式,字符串长的会优先匹配
2、按优先级排列(把最先执行的写在配置文件的最上面)
= 类型
^~ 类型表达式
正则表达式(和*)类型
常规字符串匹配类型,按前缀匹配
通用匹配(/),如果没有其它匹配,任何请求都会匹配到
【常用匹配正则元字符】
^:匹配输入字符串的起始位置
$:匹配输入字符串的结束位置
*****:匹配前面的字符零次或多次
+:匹配前面的字符一次或多次
?:匹配前面的字符零次或一次
.:匹配除\n之外的任何单个字符 使用[.\n]可以匹配包括\n在内的任意字符
****:转义符
\d:匹配纯数字
{n}:重复n次
{n,}:重复n次或更多次
[c]:匹配单个字符c
[a-z]:匹配a-z小写字母的任意一个
[a-zA-Z]:匹配a-z小写字母或A-Z大写字母的任意一个
反向代理(server)
index index.html index.htm index.jsp;
proxy_set_header X-Real-IP $remote_addr; # 获取客户端真实IP
proxy_set_header REMOTE-HOST $remote_addr; # 获取客户端浏览器的主机名
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 获取代理者的真实ip
proxy_set_header Host $host:$server_port;
access_log logs/nginx/access-xxx.log main; #单独生成访问xxx服务日志
proxy_pass http://11.33.22.56:8080/xxx; #xxx代理地址
地址替换规则:
1.proxy_pass的目标地址,默认不带/,表示只代理域名,url和参数部分不会变(把请求的path拼接到proxy_pass目标域名之后作为代理的URL)
2.如果在目标地址后增加/,则表示把path中location匹配成功的部分剪切掉之后再拼接到proxy_pass目标地址
location /name/ {
proxy_pass http://127.0.0.1/remote;
} http://127.0.0.1/name/tangzhangss》》 http://127.0.0.1/remote/name/tangzhangsslocation /name/ {
proxy_pass http://127.0.0.1/remote/;
} http://127.0.0.1/name/tangzhangss》》 http://127.0.0.1/remote/tangzhangss
网络相关(http)
单位:秒
keepalive_timeout 65; #客户端与服务器的长连接的超时时间,超过这个时间服务器会关闭连接
#nginx服务器与被代理的服务器建立连接的超时时间,默认60秒
proxy_connect_timeout 1;
#nginx服务器想被代理服务器组发出read请求后,等待响应的超时间,默认为60秒。
proxy_read_timeout 1;
#nginx服务器想被代理服务器组发出write请求后,等待响应的超时间,默认为60秒。
proxy_send_timeout 1;
#客户端断网时,nginx服务器是否终端对被代理服务器的请求。默认为off。
proxy_ignore_client_abort on;
gzip相关(http)
gzip on; #是否开启gzip压缩,图片和mp3这样的二进制文件不必压缩,浪费cpu资源
gzip_buffers 32 4K ; #缓冲(压缩在内存中缓冲几块? 每块多大?)
gzip_comp_level 6; #推荐6 压缩级别(级别越高,压的越小,越浪费CPU计算资源)
gzip_disable "MSIE [1-6]\."; #配置禁用gzip条件,支持正则,什么样的Uri不进行gzip。此处表示ie6及以下不启用gzip(因为ie低版本不支持)
gzip_min_length 200 ; # 开始压缩的最小长度
gzip_types text/plain application/xml ; # 对哪些类型的文件用压缩 如txt,xml,html ,css
gzip_vary on; # 是否传输gzip压缩标志
FastCGI相关(http)
改善网站的性能:减少资源占用,提高访问速度,单位:秒
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
其他常用配置
- client_header_buffer_size 4k
客户端请求头部的缓冲区大小。这个可以根据你的系统分页大小来设置,一般一个请求的头部大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。分页大小可以用命令getconf PAGESIZE取得。
• large_client_header_buffers 4 128k
客户请求头缓冲大小。nginx默认会用client_header_buffer_size这个buffer来读取header值,如果header过大,它会使用large_client_header_buffers来读取。
• client_max_body_size 300m
允许客户端请求的最大单文件字节数(这里如果设置小了话可能让某些网站后台不能传附件及在nginx使用过程中,上传文件的过程中,通常需要设置nginx报文大小限制。避免出现413 Request Entity Too Large)
• client_body_buffer_size 128k
缓冲区代理缓冲用户端请求的最大字节数
• proxy相关配置
proxy_connect_timeout 600; #nginx跟后端服务器连接超时时间(代理连接超时,单位秒)
proxy_read_timeout 600; #连接成功后,后端服务器响应时间(代理接收超时,单位秒)
proxy_send_timeout 600; #后端服务器数据回传时间(代理发送超时,单位秒)
proxy_buffer_size 64k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传
负载均衡 - 健康检测nginx_upstream_check_module配置
1.下载补丁
cd /usr/local/nginx-16.0
wget https://codeload.github.com/yaoweibin/nginx_upstream_check_module/zip/master
unzip master
2.打补丁
patch -p0 < /usr/local/nginx-1.16.0/nginx_upstream_check_module-master/check_1.11.5+.patch
3.添加配置
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --add-module=/usr/local/nginx-1.16.0/nginx_upstream_check_module-master
4.make&make install
5.查看nginx模块配置
/usr/local/nginx/sbin/nginx -V
6.nginx.conf配置
(http)
对name这个负载均衡条目中的所有节点,每个3秒检测一次,请求2次正常则标记 realserver状态为up,如果检测 5 次都失败,则标记 realserver的状态为down,超时时间为1秒。
(server)
location = /check_nginx_status {
check_status;
access_log off;
#allow IP;
#deny all;
}
location = /nginx_status {
stub_status;
access_log off;
}
7.重新加载
/usr/local/nginx/sbin -s reload
8.配置效果