1、配置文件的语法格式
worker_processes 1; #共要创建多少个工作线程
events {
worker_connections 1024;#工作线程连接数
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
location /nginx_status {
stub_status on;
access_log off;
}
}
}
上述配置中的events、http、server、location、upstream等属于配置项块。而worker_processes 、worker_connections、include、listen 属于配置项块中的属性。 /nginx_status 属于配置块的特定参数参数。其中server块嵌套于http块,其可以直接继承访问Http块当中的参数。
格式:
配置块 | 名称开头用大口号包裹其对应属性 |
---|---|
属性 | 基于空格切分属性名与属性值,属性值可能有多个项 都以空格进行切分 如: access_log logs/host.access.log main |
参数 | 其配置在 块名称与大括号间,其值如果有多个也是通过空格进行拆 |
2、配置静态站点
2.1 创建文件夹
mkdir -p /usr/www/dongkuijieIT
2.2 编写静态页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
hello nginx
</body>
</html>
2.3 上传至dongkuijieIT文件夹下
2.4 进入/根目录/nginx/conf
目录修改配置文件
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
server {
listen 80;
server_name localhost;
location / {
root /usr/www/dongkuijieIT;
index index.html index.htm;
}
location /test {
alisa /usr/www/dongkuijieIT;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
2.5 重新加载配置文件
./sbin/nginx -s reload
2.6 效果:
2.7 原理解析:
在浏览器输入http://192.168.1.6/
会自动找向location /
,然后再找根目录root /usr/www/dongkuijieIT;
通过root根目录,在找向index.html
2.8 root与alias区别:
root 指定站点根目录
可配置在 server与location中,基于ROOT路径+URL中路径去寻找指定文件
alias 指定站点别名
只能配置location 中。基于alias 路径+ URL移除location 前缀后的路径来寻找文件。
3、配置静态站点
3.1 基于目录动静分离
配置文件:
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
server {
listen 80;
server_name localhost;
location /static {
alias /usr/www/static;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
效果:
3.2 基于正则动静分离
配置文件:
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
server {
listen 80;
server_name localhost;
location / {
root /usr/www/dongkuijieIT;
index index.html index.htm;
}
location ~* \.(gif|jpg|png|css|js)$ {
root /usr/www/static;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
效果:
4、防盗链配置
# 加入至指定location 即可实现
valid_referers none blocked *.luban.com;
if ($invalid_referer) {
return 403;
}
5、下载限速
location /download {
limit_rate 1m; //限制每S下载速度
limit_rate_after 30m; // 超过30 之 后在下载
}
6.创建IP黑名单
#封禁指定IP
deny 192.168.0.1;
allow 192.168.0.1;
#开放指定IP 段
allow 192.168.0.0/24;
#封禁所有
deny all;
#开放所有
allow all;
# 创建黑名单文件
echo 'deny 192.168.0.132;' >> balck.ip
#http 配置块中引入 黑名单文件
include black.ip;
7.负载均衡
配置文件:
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
upstream backend {
server 127.0.0.1:8082 weight=1;
server 127.0.0.1:8083 weight=2;
server 127.0.0.1:8084 weight=1 backup;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://backend;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
参数详解:
1.要负载均衡服务器的ip:端口号
weight:负载均衡的权重
backup:当两台服务器都挂掉以后,8084这台服务器会做备份服务器
max_fails:失败多少次 认为主机已挂掉则剔除
fail_timeout:踢出后重新探测时间
max_conns:允许最大连接数
slow_start:当节点恢复,不立即加入,而是等待 slow_start 后加入服务对列。
upstream backend {
server 127.0.0.1:8082 weight=1;
server 127.0.0.1:8083 weight=2;
server 127.0.0.1:8084 weight=1 backup;
}
注意:当8082 挂掉以后,nginx会将它剔除,当8082恢复以后nginx会再将它添加进来。8083同理
负载均衡算法:
ll+weight: 轮询加权重 (默认)
ip_hash : 基于Hash 计算 ,用于保持session 一至性
url_hash: 静态资源缓存,节约存储,加快速度(第三方)
least_conn :最少链接(第三方)
least_time :最小的响应时间,计算节点平均响应时间,然后取响应最快的那个,分配更高权重(第三方)