Nginx 的常用功能
1. 正向代理
2.反向代理
3.静态资源服务器/配置下载速度
4.负载均衡/负载均衡算法
5.配置白名单/黑名单
一.Nginx 常用到的命令
进入到下面的目录,然后使用命令
cd /usr/local/nginx/sbin
1.1 查看Nginx版本号
./nginx -v
1.2 启动Nginx
./nginx
1.3 关闭Nginx
./nginx -s stop
1.4 重新加载Nginx
./nginx -s reload
1.5 重启Nginx
./nginx -s reopen
1.6 优雅停止Nginx
./nginx -s quit
1.7 测试配置文件是否正确
./nginx -t
3 配置文件
配置文件所在位置:
/usr/local/nginx/conf/nginx.conf
二.配置文件结构
由全局块+events块+http块组成
全局块:主要配置全局的配置项:比如进程数日志文件pid
Event块:配置最大连接数,需要根据项目实际需要进行配置
http块:项目中需要配置的核心区域。比如代理、缓存和日志定义等绝大多数功能,http块又包括全局块和server块两个部分。
2.1 http全局块
http全局块配置的指令包括文件引入、MIME-TYPE定义、日志自定义、连接超时时间、单链接请求数上限等。
2.2 server块
每个http块可以包括多个server块,而每个server块就相当于一个虚拟主机。
每个server块也可以分为全局server块,以及可以同时包含多个location块。
2.2.1 全局server块
最常见的配置时本虚拟主机的监听配置和本虚拟主机的名称或IP配置。
2.2.2 location块
一个server块可以配置多个location块。
这块的主要作用是基于Nginx服务器接收到的请求字符串(例如server_name/uri-string),对虚拟主机名称(也可以是IP别名)之外的字符串(例如前面的/uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。
代理配置:
正向代理(forward proxy):通过nginx进行一次访问代理,nginx中配置的服务地址其实是一个访问真是服务的一个客户端地址。结果是由代理的客户端服务访问的最终服务器返回。
正向代理的配置
例如:http {
resolver 8.8.8.8;
server {
listen 8088;
location / {
proxy_pass http://$http_host$request_uri;
}
}
}
Nginx实现代理上网,有三个关键点必须注意,其余的配置跟普通的nginx一样
1.增加dns解析resolver/dns服务器
2.增加无server_name名的server
3.proxy_pass指令
resolver表示DNS服务器
location表示匹配用户访问的资源,并作进一步转交和处理,可用正则表达式匹配
proxy_pass表示需要代理的地址
$http_host表示用户访问资源的主机部分
$request_uri表示用户访问资源的URI部分。
如,http://nginx.org/download/nginx-1.6.3.tar.gz,则httphost=nginx.org,request_uri=/download/nginx-1.6.3.tar.gz。
反向代理:
客户端无法感知代理,因为客户端访问网络不需要配置,只要把请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据,然后再返回到客户端。
负载均衡:
负载均衡策略有以下几种中:轮询/权重/ip_hash/最少连接数
配置如下:
静态资源服务器:
# nginx静态资源配置–静态服务器(也是最简单的配置)
server {
listen 80; #监听端口号
server_name localhost; #主机名
index index.html index.htm; #默认页名称
root html; #静态资源存放目录
location / { #匹配路径
root html; #文件根目录
index index.html index.htm; #默认页名称
}
error_page 500 502 503 504 /50x.html; #报错编码对应页面
location = /50x.html {
root html;
}
}
设置限速:
server{
……………..
location {
………
limit_conn one 5; #连接数限制(线程)
l imit_rate_after:1024k; #当下载文件达到这个值时开始限速
limit_rate 50k; #带宽限制
……..
}
……………..
}
配置黑名单/白名单:黑白名单是由关键字: allow/deny 来处理。
#定义IP黑名单
geo $block {
default 0;
#假设1.2.3.4是要加入黑名单的IP
1.2.3.4 1;
}
server {
…
location / {
#黑名单规则
if ($block) {
return 403;
}
#白名单规则
#假设192.168.1.1是要加入白名单的IP
allow 192.168.1.1;
#禁止所有其他IP
deny all;
}
}