1.nginx的相关目录
/usr/local/nginx目录是nginx安装成功后,默认生成的目录。
nginx的启动文件在/usr/local/nginx/sbin目录下。
nginx的生效的主配置文件是/usr/local/nginx/conf/nginx.conf
备注: 可以通过ps -eg | grep nginx查到nginx的安装路径,如果linux 普通用户查不到,可以切换到root用户查找
2、nginx配置文件
整体结构为嵌套结构:
#1、全局配置----------------
...
#2、events配置---------------
events{
....
}
#http配置-------------------
http{
#http全局配置
...
#server全局配置
server{
#server全局配置
...
#location配置
location [PATTERN]
{
...
}
}
}
主要有以下部分:
main(全局设置):main部分设置的指令将影响到其他所有部分的设置;一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。一个http中可以有多个server
server(主机设置):server部分的指令主要用于指定虚拟主机域名、IP和端口;
upstream(上游服务器设置,主要为反向代理、负载均衡相关配置):upstream的指令用于设置一系列的后端服务器,设置反向代理及后端服务器的负载均衡;
location(URL匹配特定位置后的设置):location部分用于匹配网页位置(比如,根目录“/”,“/images”,等等);
2.1、全局配置
#全局配置-------------------------------------------------------------
指定nginx运行的用户及用户组,默认为nobody
user nobody nobody;
开启线程数,最大值可设逻辑CPU核数
worker_processes 1;
定位全局错误日志文件,级别以notice显示,还有debug,info,warn,error,crit模式,debug输出最多,crir输出最少,根据实际环境而定
error_log logs/error.log;
error_log logs/error.log notice;
error_log logs/error.log info;
指定进程id的存储文件位置
pid logs/nginx.pid;
指定一个nginx进程打开的最多文件描述符数目,受系统进程的最大打开文件数量限制
worker_rlimit_nofile 65535
#envents 配置----------------------------------------------------------
events {
...
}
#http 配置-------------------------------------------------------------
http {
...
}
2.2、events配置
events {
设置工作模式为epoll,除此之外还有select,poll,kqueue,rtsig和/dev/poll模式
use epoll;
定义每个进程的最大连接数,受系统进程的最大打开文件数量限制
worker_connections 1024;
}
2.3、http配置
http {
#主模块指令,实现对配置文件所包含的文件的设定,可以减少主配置文件的复杂度
include mime.types;
#核心模块指令,默认设置为二进制流,也就是当文件类型未定义时使用这种方式
default_type application/octet-stream;
#下面代码为日志格式的设定,main为日志格式的名称,可自行设置,后面引用
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#引用日志main格式
access_log logs/access.log main;
#设置允许客户端请求的最大的单个文件字节数
client_max_body_size 20M;
#指定来自客户端请求头的headebuffer大小
client_header_buffer_size 32k;
#指定连接请求试图写入缓存文件的目录路径
client_body_temp_path /dev/shm/client_body_temp;
#指定客户端请求中较大的消息头的缓存最大数量和大小,目前设置为4个32KB
large client_header_buffers 4 32k;
#开启高效文件传输模式
sendfile on;
#开启防止网络阻塞
tcp_nopush on;
#开启防止网络阻塞
tcp_nodelay on;
#设置客户端连接保存活动的超时时间
#keepalive_timeout 0; # 无限时间
keepalive_timeout 65;
#设置客户端请求读取header超时时间
client_header_timeout 10;
#设置客户端请求body读取超时时间
client_body_timeout 10;
#HttpGZip模块配置
#开启gzip压缩
gzip on;
#设置允许压缩的页面最小字节数
gzip_min_length 1k;
#申请4个单位为16K的内存作为压缩结果流缓存
gzip_buffers 4 16k;
#设置识别http协议的版本,默认为1.1
gzip_http_version 1.1;
#指定gzip压缩比,1-9数字越小,压缩比越小,速度越快
gzip_comp_level 2;
#指定压缩的类型
gzip_types text/plain application/x-javascript text/css application/xml;
#让前端的缓存服务器进过gzip压缩的页面
gzip_vary on;
# server配置
server {
}
}
2.4、server配置
server {
#单连接请求上限次数
keepalive_requests 120;
#监听端口
listen 88;
#监听地址,可以是ip,最好是域名
server_name 111.222.333.123;
#server_name www.123.com;
#设置访问的语言编码
charset utf-8;
#设置虚拟主机访问日志的存放路径及日志的格式为main
access_log /www/wwwlogs/111.222.333.123.log main; #响应日志
error_log /www/wwwlogs/111.222.333.123.log main; #错误日志
#PHP-INFO-START PHP引用配置,可以注释或修改
include enable-php-74.conf;
#PHP-INFO-END
#REWRITE-START URL重写规则引用
include /www/server/panel/vhost/rewrite/111.222.333.123.conf;
#REWRITE-END
#设置主机基本信息
#请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
location ~*^.+$ {
#根目录
root html;
#设置默认页
index index.html index.htm;
#拒绝的ip,黑名单
deny 127.0.0.1;
#允许的ip,白名单
allow 172.18.5.54;
}
#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
{
return 404;
}
#SSL证书验证目录相关设置
location ~ \.well-known{
allow all;
}
#图片资源配置
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
error_log /dev/null;
access_log off;
}
#网站js与css资源配置
location ~ .*\.(js|css)?$
{
expires 12h;
error_log /dev/null;
access_log off;
}
#访问异常页面配置
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
2.5、其他常见配置项
1. \$remote_addr 与 \$http_x_forwarded_for 用以记录客户端的ip地址;
2.\$remote_user :用来记录客户端用户名称;
3.\$time_local : 用来记录访问时间与时区;
4.\$request : 用来记录请求的url与http协议;
5.\$status : 用来记录请求状态;成功是200;
6.\$body_bytes_s ent :记录发送给客户端文件主体内容大小;
7.\$http_referer :用来记录从那个页面链接访问过来的;
8.\$http_user_agent :记录客户端浏览器的相关信息;
网友评论