小工具知识网

当前位置: 首页 > 行业知识 > nginx 局部配置

行业知识

nginx 局部配置

2026-11-02 14:43:57 来源:互联网转载

event模块

events {
��  worker_connections  65536;  #设置单个工作进程的最大并发连接数


   use epoll;

   #使用epoll事件驱动,Nginx支持众多的事件驱动,比如:select、poll、epoll,只能设置在events模块中设置。


   accept_mutex on; 

   #on为同一时刻一个请求轮流由work进程处理,而防止被同时唤醒所有worker,避免多个睡眠进程被唤醒的设置,默认为off,新请求会唤醒所有worker进程,此过程也称为"惊群",因此nginx刚安装完以后要进行适当的优化。建议设置为on


   multi_accept on; 

   #ON时Nginx服务器的每个工作进程可以同时接受多个新的网络连接,此指令默认为off,即默认为一个工作进程只能一次接受一个新的网络连接,打开后几个同时接受多个。建议设置为on

 

}


http模块

http 是一个大的语句块,包含若干个小的语句块(比如server语句块)

http {

 ...

 ...  #各server的公共配置
 server {    #每个server用于定义一个虚拟主机,第一个server为默认虚拟服务器

                   一个http中可以有多个server

 ...

 }

 server {     

 ...

 server_name   #虚拟主机名

 root     #主目录

 alias     #路径别名
 location [OPERATOR] URL {     #指定URL的特性

 ...
 if CONDITION {

 ...
 }
 }
 }
}

http {

   include       mime.types; #导入支持的文件类型,是相对于/apps/nginx/conf的目录

   default_type application/octet-stream; #除mime.types中文件类型外,设置其它文件默认类型,访问其它类型时会提示下载不匹配的类型文件

#日志配置部分
    #log_format main '$remote_addr - $remote_user [$time_local] "$request" '

    #                 '$status $body_bytes_sent "$http_referer" '

    #                 '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log logs/access.log main;

#自定义优化参数
   sendfile       on; 
    #tcp_nopush     on; #在开启了sendfile的情况下,合并请求后统一发送给客户端。
    #tcp_nodelay   off; #在开启了keepalived模式下的连接是否启用TCP_NODELAY选项,当为off时,延迟0.2s发送,默认On时,不延迟发送,立即发送用户响应报文。
    #keepalive_timeout 0;
   keepalive_timeout  65 65; #设置会话保持时间,第二个值为响应首部:keepAlived:timeout=65,可以和第一个值不同
    #gzip on; #开启文件压缩
   server {

       listen       80; #设置监听地址和端口

       server_name localhost; #设置server name,可以以空格隔开写多个并支持正则表达式,如:*.kgc.com www.kgc.* ~^www\d+\.kgc\.com$ default_server 

        #charset koi8-r; #设置编码格式,默认是俄语格式,建议改为utf-8
        #access_log logs/host.access.log main;
       location /fxj  {           www.ky31.com/fsj     /apps/nginx/html   

           root   /data;
           index index.html index.htm;
       }

        #error_page 404             /404.html;

        # redirect server error pages to the static page /50x.html

        #

       error_page   500 502 503 504 /50x.html; #定义错误页面

       location = /50x.html {

           root   html;

       }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80

        #

        #location ~ \.php$ { #以http的方式转发php请求到指定web服务器

        #   proxy_pass   http://127.0.0.1;

        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

        #

        #location ~ \.php$ { #以fastcgi的方式转发php请求到php处理

        #   root           html;

        #   fastcgi_pass   127.0.0.1:9000;

        #   fastcgi_index index.php;

        #   fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

        #   include       fastcgi_params;

        #}

        # deny access to .htaccess files, if Apache's document root

        # concurs with nginx's one

        #

        #location ~ /\.ht { #拒绝web形式访问指定文件,如很多的网站都是通过.htaccess文件

来改变自己的重定向等功能。

        #   deny all;

        #}

       location ~ /passwd.html {

           deny all;

       }

   }

mime

此项为支持的 文件格式,如果不支持的格式 会自动帮你下载,如果支持 就会显示在网页上

编译安装的在 conf 文件夹下  yum 安装的在  /etc/nginx/下

types {

    text/html                                        html htm shtml;

    .....................................................................

    image/png                                        png;

    image/svg+xml                                    svg svgz;

    image/tiff                                       tif tiff;

    image/vnd.wap.wbmp                               wbmp;

    image/webp                                       webp;

    image/x-icon                                     ico;

    image/x-jng                                      jng;

    image/x-ms-bmp                                   bmp;


sever 下的 root

root指定了主页文件的位置,可以写在 http server location 下

root 指明根目录的位置

location 根据 用户的访问地址的不同 ,指定访问的目录


server块构建虚拟主机 实际只有1台, 好像有多台主机

这个配置写在子配置文件,nginx需要自己建子配置文件夹

在子配置文件中,进行配置  此处基于域名

要在对应的文件夹下建index.html页面

vim /etc/hosts

基于端口


alias 别名

server {

   listen 80;

   server_name www.kgc.com;

   location /news {

        root /data/nginx/html/pc/;

        #相当于追加  将 文件夹news追加到/data/nginx/html/pc/news

        }

   location /study{

        alias /mnt/nginx/sports/;

        #相当于替换 你访问 study  就是访问/mnt/nginx/sports

        }

}

location

在一个server中location配置段可存在多个,用于实现从uri到文件系统的路径映射;ngnix会根据用户请求的URI来检查定义的所有location,按一定的优化级找出一个最佳匹配,而后应用其配置在没有使用正则表达式的时候,nginx会先在server中的多个location选取匹配度最高的一个uri,uri是用户请求的字符串,即域名后面的web文件路径,然后使用该location模块中的正则url和字符串,如果匹配成功就结束搜索,并使用此location处理此请求。

语法规则:

location [ = | ~ | ~* | ^~ ] uri { ... }

=                  #用于标准url前,需要请求字串与uri精确匹配,大小敏感,如果匹配成功就停止向下匹配并立即处理请求


^~                #用于标准url前,表示包含正则表达式,并且匹配以指定的正则表达式开头,对URI的最左边部分做匹配检查,不区分字符大小写         例:location ^~ root  {...}  表示,以 root或者ROOT开头 不区分大小写


~                  #用于标准url前,表示包含正则表达式,并且区分大小写  例:location ~ root  {...} 包含 root 区分大小写


~*                #用于标准url前,表示包含正则表达式,并且不区分大写  例:location ~* root  {...}  包含 root 不区分大小写


不带符号              #匹配起始于此uri的所有的uri  例:location /root  {...}  以root开头 区分大小写

#\                #用于标准url前,表示包含正则表达式并且转义字符。可以将 . * ?等转义为普通符号

匹配优先级从高到低:

   =,    ^~,     ~      ~*,  不带符号

access 模块(控制地址访问) 四层控制

access模块安装时自带

进行访问控制

形成白名单

想做黑名单,只要默认同意所有,在拒绝特定的ip地址就可以了

验证模块

server {

   listen 80;

   server_name www.test.com;

 

   location /a.jpg{

        root /data/;

        auth_basic    "emmmm";

        #提示信息,不是所有浏览器都有用

        auth_basic_user_file  /mnt/nginxuser;

        #密码文件存放位置

 }

}

生成账号密码需要 htppasswd 命令 ,可以 yum install httpd-tools -y 安装 里面带这个命令

第一次生成文件

htpasswd -c  文件路径 姓名             交互式生成密码

htpasswd -bc 文件路径 姓名 密码           直接将密码跟在后面 

-c  代表新建用户名和密码对应的文件

-b  将密码跟在用户名后

非第一次

htpasswd     文件路径 姓名             交互式生成密码

htpasswd -b  文件路径 姓名 密码           直接将密码跟在后面 

自定义错误页面

我们 可以改变 默认的错误页面,同时也可以用指定的响应状态码进行响应, 可用位置:http, server, location, if in location

格式:

error_page code ... [=[response]] uri;

页面错误代码  

error_page    固定写法

code          响应码

=             可以将响应码转换

uri           访问连接

自定义错误码

 

出错直接跳转到显示主站点

日志位置存放

可以在配置文件的任意位置写

格式

固定格式      文件路径                         级别(info  debug等  可以忽略不写)

error_log    /apps/nginx/logs/kgc_error.log;

检测文件是否存在

try_files会按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。只有最后一个参数可以引起一个内部重定向,之前的参数只设置内部URI的指向。最后一个参数是回退URI且必须存在,否则会出现内部500错误

能用在server, location

长连接

keepalive_timeout timeout [header_timeout];  

#设定保持连接超时时长,0表示禁止长连接,默认为65-75s,版本不一,默认不一样,通常配置在http字段作为站点全局配置

keepalive_requests number;  

#在一次长连接上所允许请求的资源的最大数量,默认为100次,建议适当调大,比如:500

可以加在全局或者 server 

keepalive_requests 3;

#最大下载三个资源就会断开

keepalive_timeout 60 65;   #只能有一个空格 

#开启长连接后,返回客户端的会话保持时间为60s,单次长连接累计请求达到指定次数请求或65秒就会被断开,后面的60为发送给客户端应答报文头部中显示的超时时间设置为60s:如不设置客户端将不显示超时时间。

Keep-Alive:timeout=60  #浏览器收到的服务器返回的报文

#如果设置为0表示关闭会话保持功能,将如下显示:

Connection:close  #浏览器收到的服务器返回的报文

对指定的浏览器禁止长连接

keepalive_disable none | browser ...;

作为下载服务器使用

该模块自带

autoindex on | off;

#自动文件索引功能,默为off

autoindex_exact_size on | off;  

#计算文件确切大小(单位bytes),off 显示大概大小(单位K、M),默认on

autoindex_localtime on | off ; 

#显示本机时间而非GMT(格林威治)时间,默认off

autoindex_format html | xml | json | jsonp; 

#显示索引的页面文件风格,默认html

limit_rate rate; 

#限制响应客户端传输速率(除GET和HEAD以外的所有方法),单位B/s,即bytes/second,默认值0,表示无限制,此指令由ngx_http_core_module提供

set $limit_rate  限制下载速度

#变量提供 限制   变量优先级高

用户上传资料

上传需要借助开发小的程序, 并且程序 5M 和 nginx 10M 都会限制。 两者取最小

client_max_body_size 1m; 

#设置允许客户端上传单个文件的最大值,默认值为1m,上传文件超过此值会出413错误

client_body_buffer_size size; 

#用于接收每个客户端请求报文的body部分的缓冲区大小;默认16k;超出此大小时,其将被暂存到磁盘上的由下面client_body_temp_path指令所定义的位置

client_body_temp_path path [level1 [level2 [level3]]];

#设定存储客户端请求报文的body部分的临时存储路径及子目录结构和数量,目录名为16进制的数字,使用hash之后的值从后往前截取1位、2位、2位作为目录名

上传文件大于限制  错误代码413

其他设置

directio size | off;

#操作完全和aio相反,aio是读取文件而directio是写文件到磁盘,启用直接I/O,默认为关闭,当文件大于等于给定大小时,例如:directio 4m;同步(直接)写磁盘,而非写缓存。

open_file_cache off;  #是否缓存打开过的文件信息

open_file_cache max=N [inactive=time];

#nginx可以缓存以下三种信息:

(1) 文件元数据:文件的描述符、文件大小和最近一次的修改时间

(2) 打开的目录结构

(3) 没有找到的或者没有权限访问的文件的相关信息 

max=N:#可缓存的缓存项上限数量;达到上限后会使用LRU(Least recently used,最近最少使用)算法实现管理

inactive=time:#缓存项的非活动时长,在此处指定的时长内未被命中的或命中的次数少于

open_file_cache_min_uses    

#指令所指定的次数的缓存项即为非活动项,将被删除 

open_file_cache_valid time; 

#缓存项有效性的检查验证频率,默认值为60s 

open_file_cache_errors on | off; 

#是否缓存查找时发生错误的文件一类的信息,默认值为off

open_file_cache_min_uses number; 

#open_file_cache指令的inactive参数指定的时长内,至少被命中此处指定的次数方可被归类为活动项,默认值为1

范例:

open_file_cache max=10000 inactive=60s; 

#最大缓存10000个文件,非活动数据超时时长60s

open_file_cache_valid   60s;  

#每间隔60s检查一下缓存数据有效性

open_file_cache_min_uses 5; 

#60秒内至少被命中访问5次才被标记为活动数据

open_file_cache_errors   on;

#缓存错误信息

limit_except method ... { ... },仅用于location

#限制客户端使用除了指定的请求方法之外的其它方法 

method:GET, HEAD, POST, PUT, DELETE,MKCOL, COPY, MOVE, OPTIONS, PROPFIND, 

PROPPATCH, LOCK, UNLOCK, PATCH

limit_except GET {

 allow 192.168.91.101;

 deny all;

}

        

上一篇:智能科技产品下载全攻略,轻松获取,一键开启智能生活!

下一篇:火狐pop服务器地址怎么填?