Nginx基本配置文件(nginx配置详细讲解)
admin2024-08-14 10:15:17Linux运维
//nginx默认配置语法
worker_processes //工作进程, 配置和CPU个数保持一致
error_log //错误日志, 后面接入的是路径
pid //Nginx服务启动时的pid
//events事件模块
events { //事件模块
worker_connections 1024; //每个worker进程支持的最大连接数
use epoll //内核模型,select,poll,epoll
}
//非虚拟主机的配置或公共配置定义在http{}段内, server{}段外
http {
...
//必须使用虚拟机配置站点, 每个虚拟机使用一个server{}段
server {
listen 80; //监听端口, 默认80
server_name localhost; //提供服务的域名或主机名
//控制网站访问路径
location / {
root /usr/share/nginx/html; //存放网站路径
index index.html index.htm; //默认访问首页文件
}
//错误页面,统一定义错误页面
//定义请求错误, 指定错误代码
则。
error_page 500 502 503 504 /50x.html;
//错误代码重定向到新的Locaiton
location = /50x.html {
root html;
}
}
...
//第二个虚拟主机配置
server {
...
}
}
Nginx日志配置规范
//配置语法: 包括: error.log access.log
Syntax: log_format name [escape=default|json] string ...;
Default: log_format combined "...";
Context: http
//Nginx默认配置
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
$remote_addr //表示客户端地址
$remote_user //http客户端请求nginx认证用户名
$time_local //Nginx的时间
$request //Request请求行, GET等方法、http协议版本
$status //respoence返回状态码
$body_bytes_sent //从服务端响应给客户端body信息大小
$http_referer //http上一级页面, 防盗链、用户行为分析
$http_user_agent //http头部信息, 客户端访问设备
$http_x_forwarded_for //http请求携带的http信息
Nginx状态监控
--with-http_stub_status_module记录Nginx客户端基本访问状态信息
Syntax: stub_status;
Default: —
Context: server, location
具体配置如下:
location /mystatus {
stub_status on;
access_log off;
}
//Nginx_status概述
Active connections:2 //Nginx当前活跃连接数
server accepts handled requests
16 16 19
server表示Nginx启动到现在共处理了16个连接。
accepts表示Nginx启动到现在共成功创建16次握手。
请求丢失数=(握手数-连接数)可以看出,本次状态显示没有丢失请求。
handled requests,表示总共处理了19次请求。
Reading Nginx读取到客户端的 Header 信息数。
Writing Nginx返回给客户端的 Header 信息数。
Waiting Nginx开启keep-alive长连接情况下, 既没有读也没有写, 建立连接情况
Nginx下载站点
Nginx默认是不允许列出整个目录浏览下载。
Syntax: autoindex on | off;
Default:
autoindex off;
Context: http, server, location
//autoindex常用参数
autoindex_exact_size off;
默认为on, 显示出文件的确切大小,单位是bytes。
修改为off,显示出文件的大概大小,单位是kB或者MB或者GB。
autoindex_localtime on;
默认为off,显示的文件时间为GMT时间。
修改为on, 显示的文件时间为文件的服务器时间。
charset utf-8,gbk;
默认中文目录乱码,添加上解决乱码。
配置目录浏览功能
//开启目录浏览
location / {
root html;
autoindex on;
autoindex_localtime on;
autoindex_exact_size off;
}
Nginx访问限制
连接频率限制 limit_conn_module
请求频率限制 limit_req_module
Nginx连接限制配置:
//全局定义连接限制
Syntax: limit_conn_zone key zone=name:size;
Default: —
Context: http
//引用连接限制
Syntax: limit_conn zone number;
Default: —
Context: http, server, location
//具体配置如下:
http {
//http段配置连接限制, 同一时刻只允许一个客户端IP连接
limit_conn_zone $binary_remote_addr zone=conn_zone:10m;
...
server {
...
location / {
//同一时刻只允许一个客户端IP连接
limit_conn conn_zone 1;
}
//压力测试
yum install -y httpd-tools
ab -n 50 -c 20 http://127.0.0.1/index.html
Nginx请求限制配置:
//全局定义请求限制
Syntax: limit_conn_zone key zone=name:size rate=rate;
Default: —
Context: http
//引用请求限制
Syntax: limit_conn zone number [burst=number] [nodelay];
Default: —
Context: http, server, location
//具体配置如下:
http {
//http段配置请求限制, rate限制速率,限制一秒钟最多一个IP请求
limit_req_zone $binary_remote_addr zone=req_zone:10m rate=1r/s;
...
server {
...
location / {
//1r/s只接收一个请求,其余请求拒绝处理并返回错误码给客户端
limit_req zone=req_zone;
//请求超过1r/s,剩下的将被延迟处理,请求数超过burst定义的数量, 多余的请求返回503
#limit_req zone=req_zone burst=3 nodelay;
}
//压力测试
yum install -y httpd-tools
ab -n 50 -c 20 http://127.0.0.1/index.html
Nginx访问控制
基于IP的访问控制 http_access_module
基于用户登陆认证 http_auth_basic_module
基于IP的访问控制
//允许配置语法
Syntax: allow address | CIDR | unix: | all;
Default: —
Context: http, server, location, limit_except
//拒绝配置语法
Syntax: deny address | CIDR | unix: | all;
Default: —
Context: http, server, location, limit_except
//配置拒绝某一个IP, 其他全部允许
location ~ ^/1.html {
root /usr/share/nginx/html;
index index.html;
deny 192.168.56.1;
allow all;
}
//只允许某一个网段访问,其它全部拒绝
location / {
root html;
index index.php index.html index.htm;
allow 192.168.56.0/24;
deny all;
}