三、nginx配置文件

2023-01-31  本文已影响0人  star_he

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 :记录客户端浏览器的相关信息;
上一篇 下一篇

猜你喜欢

热点阅读