nginx.conf文件结构

nginx.conf文件结构

参考:https//blog.csdn.net/u010209217/article/details/77854929

主要由三块组成  全局块 events块 http块http块中所有游戏http全局块状语从句:多个server块,每个server块所有游戏中server全局块状语从句:多个location块,采用就近原则生效

全局块

配置一些影响整体运行的指令,通常有服务器用户组 允许生成的worker process nginx.pid存放路径 日志存放路径 类型 配置文件引入

事件块

影响nginx的服务器与用户的网络连接,这一块的设置对服务的性能影响较大。通常有是否开启对WP下的网络进行序列化 是否允许同时接受多个网络连接 事件驱动模型 每个WP可以同时支持处理的最大连接数

HTTP块

重要组成部分,代理,缓存和日志定义,第三方模块的配置。通常配置 文件引入 MIME-TYPE定义 日志自定义 是否使用sendfile传输文件 连接超时时间 单连接请求数上限

具体配置

配置用户组

# 配置alleyz用户 admin组下有启停权限 
user alleyz [admin];

 #所有用户具有启停权限 
user nobody nobody;

配置运行生成的worker process

# 如果设置为数字,启动以后就具有多少个worker process 
# 设置为auto则自动检测 
worker_processes number | auto

配置pid文件存放路径

默认存放在日志/ nginx.pid

#必须包含文件名称 
pid logs/nginx_alleyz.pid;

配置错误日志文件的存放路径

可在全局块、http块 server块 location块配置

error_log file | stderr [ DEBUG | info | notice | warn | error | crit | alert | emerg];

配置文件引入 任意地方

include file; 

设置网络连接的序列化

惊群问题当某刻只有一个请求进来时,会唤醒多个睡眠的进程,造成性能的损耗

accept_mutex on | 关闭;

设置是否允许同事接受多个连接 event

multi_accept on | 关闭; #默认关闭

事件驱动模型的选择 events

可选择的内容有:select poll kqueue epoll rtsig /dev/poll eventport

use epoll;

配置最大连接数 events

允许每一个WP同事开启的最大连接数。此值不能大于操作系统支持的打开的最大文件句柄数。

worker_connections number; #默认值 512

MIME类型 http server location

default_type mime-type; #默认为 text/plain

自定义服务日志

access_log 可在http server location中配置; log_format只能在http中配置。 
注意 前文提到的error_log 配置的是nginx的运行日志,此处指的是应答前端请求的服务日志。可以对日志的格式、大小、输出进行配置,有 access_log log_format指令, log_format 的string整体需要用 '括起来,变量名称使用双引号括起来
log_format name string; access_log path [format [buffer=size]]; 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; #如果取消日志记录 access_log off;

配置sendfile方式传输文件

相关指令 sendfile sendfile_max_chunk,默认开启

sendfile on | off;
sendfile_max_chunk size; #设置为0为限制

配置连接超时时间

http块 server块 location块,设置用户会话连接的保持时间

keepalive_timeout timeout[header_timeout];

单连接请求上限

server location 用户与服务端建立连接后,通过此连接发送的请求次数

keepalive_requests number;

配置网络监听

  • 配置监听IP地址
listen address[:port] [default_server] [setfib=number] [backlog=number] [rcvbuf=size] [sendbuf=size] [deferred] [accept_filter=filter] [bind] [ssl];
  • 配置监听端口
listen port [default_server] [setfib=number] [backlog=number] [rcvbuf=size] [sendbuf=size] [accept_filter=filter] [deferred] [bind] [ipv6only=on | off] [ssl];
  • 配置Unix Domain Socket 很少用
listen unix:path [default_server] [setfib=number] [backlog=number] [rcvbuf=size] [sendbuf=size] [accept_filter=filter] [deferred] [bind] [ssl];

平常使用:

listen 3021; listen 10.8.177.21; listen 10.8.177.21:3022 default_server backlog==1024;

参数说明: 
- address ip地址,如果是ipv6需要使用[fe13:..]格式 
- port 端口号,如果只有ip则默认80 
- path socket文件路径 
- default_server, 标识符,将ip:port设置为默认的虚拟主机 
- backlog 设置监听函数listen()最多允许多少网络连接同时处于挂起的状态,默认511(FreeBSD 为-1) 
- rcvbuf 设置监听socket接受缓存区大小 
- sendbuf 设置监听socket发送缓存区大小 
- deferred 标识符,将accept()设置为Deferred模式 
- bind 标识符,使用独立的bind()处理此adress:port,一般情况下端口相同而IP地址不同,只使用一个 
- ssl 标识符,设置会话使用ssl模式(https) 
- accept_filter 设置监听端口的请求过滤,被过滤的内容不能被接受和处理(只在FreeBSD NetBSD中有用) 
- setfib 为监听socket关联路由表,只对FreeBSD起作用

基于名称的虚机主机设置

  • 可以配置多个name
server_name name name1 name2 ....;
  • 1
  • 可以使用通配符* 只能位于三段字符串组成的首尾或者两段字符串的尾部
server_name *.alleyz.com www.alleyz.*
  • 1
  • 使用正则表达式,~作为正则开始的标记,并且正则支持捕获
server_name ~([a-zA-Z\d]{1,4})\.alleyz.com$;
  • 1

此时,通过如果xisuo.alleyz.com访问的话教育,使用柯林斯$1捕获xisuo
一个名称若被多次匹配的访问优先级: 
- 匹配方式不同时 
1。精确匹配 
2。通配符在开始 
3。通配符在结尾 
4。正则表达式匹配 
- 相同匹配方式时,首次处理优先(顺序)

基于IP的虚拟主机设置

需设置网卡能监听多个IP地址

# 临时生效
ifconfig em1:0 10.8.177.21 netmask 255.255.0.0 up
ifconfig em1:1 10.8.177.22 netmask 255.255.0.0 up
# 永久生效
echo "ifconfig em1:0 10.8.177.21 netmask 255.255.0.0 up" >> /etc/rs.local

# vi nginx.conf
...
server {
  listen       3022;
  server_name  10.8.177.32;
  ...
}
server {
  listen       3022;
  server_name  10.8.177.21;
  ...
}
kill -HUP `cat ../logs/nginx_alleyz.pid`
  • 1
  • 2
  • 3
  • 4
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

配置定位块

location [ = | ~ | ~* | ^~] uri {...}
  • 1
  • =普通用于uri之前,表示严格匹配
  • ~ uri包含正则表达式,并且区分大小写
  • ~* 表示包含正则表达式,并且不区分大小写
  • ^~ 如果找到与uri匹配度最高的位置,立即处理请求。会对uri进行反编码

配置请求的根目录 http server location

服务器收到请求后查找资源的根目录路径,可以使用nginx的预设的大多变量,唯$document_root $realpath_root不能使用;在通常location块中使用。

root path;
  • 1

更改位置的URI

使用除了root指定根目录,可以还使用alias指令改变位置接收到的请求路径

alias path;

location ~ ^/data/(.+\.(htm|html))${
    alias html/data/other/$1;
}
  • 1
  • 2
  • 3
  • 4

设置网站的默认首页

可以针对不同的访问设置不同的首页

index index.html index.htm;
  • 1

设置网站的错误页面 http server location

如果URI是路径的话,则路径是以nginx的的安装目录为根路径的;

error_page code ... [=[response]] uri;
error_page 404 /404.html; 
error_page 404 http://someone.com/404.html;
  • 1
  • 2
  • 3

如果希望错误路径指向自定的位置:

error_page 404 /404.html
location /404.html{
    root /home/alleyz/html;
}
  • 1
  • 2
  • 3
  • 4

基于IP配置访问权限 http server location

allow address | CIDR | all;
deny address | CIDR | all;

location / {
    root html;
    index index.html;
    deny 10.8.177.26;
}
  • 1
  • 2
  • 3
  • 4
  • 6
  • 7
  • 8

基于密码配置访问权限

基于HTTP Basic Authentication 协议认证,文件中密码得加密!

# 生成密文,-c创建密码文件 -d采用crypt加密 -b 命令行指定密码
htpasswd -cdb  passwd alleyz 123456

# string 开启认证功能,并设置提示信息
auth_basic string | off;

#file 包含用户名信息的文件路径
auth_basic_user_file file;
  • 1
  • 2
  • 3
  • 4
  • 6
  • 7
  • 8
  • 9

我自己的测试配置

user  alleyz;
worker_processes  2;

pid        logs/nginx_alleyz.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main1  '$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  main1;

    sendfile        on;

    keepalive_timeout  65;

    server {
        listen       3022;
        server_name  10.8.177.32;

        deny 10.8.177.26;
        location / {
            auth_basic "it`s auth test msg!";
            auth_basic_user_file passwd;
            root   html/22;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }



    server {
        listen       3022;
        server_name  10.8.177.21;


        location / {
            root   html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }
}
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值