目录

安装&运行

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

nginx for windows 安装 more模块 nginx1.16安装_nginx

6.nginx.conf配置

(http)

 

nginx for windows 安装 more模块 nginx1.16安装_nginx_02

 对name这个负载均衡条目中的所有节点,每个3秒检测一次,请求2次正常则标记 realserver状态为up,如果检测 5 次都失败,则标记 realserver的状态为down,超时时间为1秒。

(server)

nginx for windows 安装 more模块 nginx1.16安装_服务器_03

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.配置效果

nginx for windows 安装 more模块 nginx1.16安装_客户端_04


nginx for windows 安装 more模块 nginx1.16安装_服务器_05