nginx服务器配置文件位于(),Nginx的主配置文件nginx.conf详解

Nginx的主配置文件nginx.conf位于~/conf下,默认配置内容如下:

#user nobody;

worker_processes 1;

#error_log logs/error.log;

#error_log logs/error.log notice;

#error_log logs/error.log info;

#pid logs/nginx.pid;

events {

worker_connections 1024;

}

http {

include mime.types;

default_type application/octet-stream;

#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;

#keepalive_timeout 0;

keepalive_timeout 65;

#gzip on;

server {

listen 80;

server_name localhost;

#charset koi8-r;

#access_log logs/host.access.log main;

location / {

root html;

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$ {

# proxy_pass http://127.0.0.1;

#}

# pass the PHP scripts to FastCGI server

listening on 127.0.0.1:9000

#

#location ~ \.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 {

# deny all;

#}

}

# another virtual host

using mix of IP-, name-, and port-based configuration

#

#server {

# listen 8000;

# listen somename:8080;

# server_name somename alias another.alias;

# location / {

# root html;

# index index.html index.htm;

# }

#}

# HTTPS server

#

#server {

# listen 443 ssl;

# server_name localhost;

# ssl_certificate cert.pem;

# ssl_certificate_key cert.key;

# ssl_session_cache shared:SSL:1m;

# ssl_session_timeout 5m;

# ssl_ciphers HIGH:!aNULL:!MD5;

# ssl_prefer_server_ciphers on;

# location / {

# root html;

# index index.html index.htm;

# }

#}

}

1.配置运行Nginx服务器的用户(组)

user user[group];

user指定可以运行的用户,group可选项,指定可以运行Nginx的用户组

若希望所有用户均可运行Nginx则可按以下两种方法配置:

#user [user] [group];即将本行注释掉

user nobody nobody;

此指令只能在全局块中配置。

2.配置允许生成的worker process数

理论上,worker process的值越大,可以支持的并发处理量也越多,但是受限于软件本身、操作系统、硬件等。

语法格式:worker_process number|auto

number:指定Nginx进程可以产生的worker process数

auto:Nginx进程将自动检测

此指令只能在全局块中配置。

3.配置Nginx进程PID存放路径

Nginx进程作为系统的守护进程运行,需要在某文件中保存当前运行程序的主进程号。

语法格式:pid file;

file:指定存放的路径和文件名称

默认该文件存放在Nginx安装目录logs下,名称为nginx.pid

此指令只能在全局块中配置。

4.配置错误日志的存放路径

语法结构:error_log file

|stderr

[debug |info|notice|warn|error|crit|alert|emerg]

错误信息可以存放在指定的file或者输出到标准输出stderr,日志级别是可选项,由低到高分为debug(编译时使

用—with-debug开启debug)、info、notice、warn、error、crit、alert、emerg。设置低一级的日志后,会自

动记录比它高级别的日志

注:指定的文件必须对于运行Nginx进程的用户具有写权限。

此指令可在全局块、http块、server块中配置。

5.配置文件的引入

对于需要其他配置文件或者第三方模块的配置文件时可使用include指令引入配置文件。

语法结构:include file;

file:要引入的配置文件

此指令可以放在配置文件的任何地方。

6.设置网络连接的序列化

为防止当某时刻一个网络连接到来时,多个睡眠进程会被同时唤醒(“惊群”)但只有一个进程获得连接的情况而设置。Nginx使用accept_mutex指令解决此问题。开启时将会对多个Nginx进程接收连接进行序列化,防止多进程对连接的争抢。此指令默认开启。

语法结构:accept_mutex on|off;

此指令只能在events块中配置。

7.设置是否允许同时接收多个网络连接

每个Nginx服务器的worker

process都有能力同时接收多个新到达的网络连接,但是这需要配置,使用指令multi_accept,此指令默认关闭状态。

语法结构:multi_accept on|off;

此指令只能在events块中配置。

8.事件驱动模型的选择

Nginx服务器提供多种驱动模型来处理网络信息。使用指令use。

语法结构:use method;

其中,method可选择的内容有select、poll、kqueue、epoll、rtsig、/dev/poll以及eventport等模型。

注:可以在编译时使用--with-select-module和--without-select_module设置是都强制编译select模块到

Nginx内核;使用--with-poll-module和--without-poll_module设置是都强制编译poll模块到Nginx内核

此指令只能在events块中配置。

9.设置最大连接数

用来设置允许每个worker process同时开启的最大连接数。

语法结构:worker_connections number;

注:number值不能大于操作系统支持打开的最大文件句柄数量。

此指令只能在events块中配置。

10.定义MIME-Type

MIME-Type用于浏览器区分HTML、XML、GIF和Flash等种类繁多的资源。

配置用于处理前端请求的MIME类型的语法结构:

default_type mime_type;

其中,mime_type为引入mime.types文件(types块)中定义的MIME类型,若不加此指令,默认使用text/plain。

此指令可在http块、server块或者location块中配置。

11、自定义服务日志

记录Nginx服务器提供服务过程中应答前端请求的日志。Nginx服务器支持对服务日志的格式、大小、输出等进行配置,需要使用两个指令,分别为access_log和log_format。

语法结构:access_log path[format

[buffer=size]];

path:配置服务日志的文件存放路径和名称。

format 可选项,自定义服务日志的格式字符串,也可以通过“格式串的名称”使用log_format指令定义好的格式。

size:配置临时存放日志的内存缓存区大小。

此指令可在http块、server块或者location块中进行设置。默认设置为:access_log logs/access_log

combined;若要取消记录服务日志功能则使用access_log off;

log_format用于定义服务日志的格式,并且可以为格式字符串定义一个名字,以便access_log调用。

语法格式:log_format name string

...;

name:格式字符串名字;string:服务日志的格式字符串

此指令只能在http块中配置。

12、配置允许sendfile方式传输文件

配置snedfile传输方式的相关指令sendfile和sendfile_max_chunk。

语法结构:sendfile on|off;

用于开启/关闭使用sendfile()传输文件,可在http块、server块、location块中配置。

语法结构:sendfile_max_chunk size;

若size大于0,则Nginx进程的每个worker

process每次调用sendfile()传输的数据量最大不能超过该值;若为0则无限制。此指令可在http块、server块、location块中配置。

13、配置连接超时时间

指令keepalive_timeout用于设置保持与用户建立会话连接的时间。

语法结构:keepalive_timeout

timeout[header_timeout];

timeout:服务器端对连接的保持时间,默认75s。

header_timeout:可选项,在应答报文头部的Keep-Alive域设置超时时间:“Keep-Alive:timeout=header_timeout”。报文中这个指令可以被Mozilla或者Konqueror识别。

此指令可在http块、server块、location块中配置。

14、单连接请求数上限

指令keepalive_requests用于限制用户通过某一连接向Nginx服务器发送请求的次数。

语法结构:keepalive_requests

number;

此指令可在http块、server块、location块中配置。默认设置为100。

15、配置网络监听

配置监听使用指令listen,有三种配置方法。

第一种配置监听的IP地址,语法结构:

listen address[:port] [default_server] [setfib=number]

[backlog=number] [rcvbuf=size] [sndbuf=size] [deferred]

[accept_file=filter] [bind] [ipv6only=on|off] [ssl];

第二种配置监听端口,语法结构:

listen port [default_server] [setfib=number]

[backlog=number] [rcvbuf=size] [sndbuf=size] [deferred]

[accept_file=filter] [bind] [ssl];

第三种配置UNIX Domain

Socket(一种原有Socket框架上发展起来的IPC机制,用于在单个主机上执行客户/服务器通信),语法结构:

listen unix:path[default_server]

[backlog=number] [rcvbuf=size] [sndbuf=size] [deferred]

[accept_file=filter] [bind] [ssl];

address:IP地址,如果是IPv6的地址,需要使用中括号[]括起来。

port:端口号

path:socket文件路径

default_server,标识符,将此虚拟主机设置为address:port的默认主机。

setfib=number:Nginx-0.8.44中使用这个变量为监听socket关联路由表,目前只对FreeBSD起作用,不常用。

backlog=number:设置监听函数listen()最多运行多少网络连接处于同时挂起状态,在FreeBSD中设置为-1,其他平台默认为511.

rcvbuf=size:设置侦听socket接收缓存区大小

sndbuf=size:设置侦听socket发送缓存区大小

deferred:标识符,将accept()设置为Deferred模式。

accept_file=filter,设置监听端口对请求的过滤,被过滤的内容不能被接收和处理。只在FreeBSD和NetBSD

5.0+平台下有效。filter可设置为dataready或httpready。

bind:标识符,使用独立的bind()处理此address:port;一般对于端口相而IP地址不同的多个连接,Nginx服务器将只使用一个监听命令,并使用bind()处理端口相同的所有连接。

ssl:标识符,设置会话连接使用SSL模式进行,此标识符和Nginx服务器提供的HTTPS服务有关。

16、基于名称的虚拟主机配置

这里的“主机”,就是指此server块对外提供的虚拟主机。配置主机名称的指令为server_name,

语法结构:server_name name...;

对于name来说,可以只有一个,也可以多个并列,之间用空格隔开。Nginx服务器规定,第一个名称作为此虚拟主机的主要名称。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值