当前位置:文档之家› nginx配置文件详解

nginx配置文件详解

nginx配置文件详解
nginx配置文件详解

Nginx处理HTTP的核心功能模块

指令

aio

语法:aio [on|off|sendfile]

默认值:off

使用字段:http, server, location

这个指令在Linux内核2.6.1922以上版本可以使用,对于Linux内核,这个指令需要配合directio指令,使用这个指令将自动关闭sendfile支持。

location /video {

aio on;

directio 512;

output_buffers 1 128k;

}

在FreeBSD5.2.1之前版本和Nginx0.8.12,你必须手工关闭sendfile:

location /video {

aio on;

sendfile off;

output_buffers 1 128k;

}

同样也可以和sendfile一起使用(FreeBSD5.2.1和Nginx0.8.12):

location /video {

aio sendfile;

sendfile on;

tcp_nopush on;

}

alias

语法:alias file-path|directory-path;

默认值:no

使用字段:location

这个指令为一个location指定一个路径,注意它可能类似于root,但是document root没有改变,请求只是使用了别名目录的文件。这个location自身为“丢弃的”,具体请看下面的例子:

location /i/ {

alias /spool/w3/images/;

}

上个例子总,请求”/i/top.gif”将返回这个文

件: ”/spool/w3/images/top.gif”。正如你所看到的,uri中location后面的部分会追加到这个目录后面,而location自身是“丢弃的”,如果使用root 指令的话会进行完整的追加,如上例中,如果使用root指令则返

回:”/spool/w3/images/i/top.gif”

Alias同样可以用于带正则表达式的location,如:

location ~ ^/download/(.*)$ {

alias /home/website/files/$1;

}

请求”/download/book.pdf”将返回”/home/website/files/book.pdf”。同样注意,uri中location后面的部分会追加到这个目录后面。

同样,也可以在别名目录字段中使用变量。

chunked_transfer_encoding

语法:chunked_transfer_encoding on|off;

默认值:on

使用字段:http, server, location

指定是否在响应时启用chunked编码(只能使用于HTTP1.1版本以上的连接)。

client_body_in_file_only

语法:client_body_in_file_only on|off

默认值:off

使用字段:http, server, location

这个指令始终存储一个连接请求实体到一个文件即使它只有0字节。

注意:如果这个指令打开,那么一个连接请求完成后,所存储的文件并不会删除。这个指令可以用于debug调试和嵌入式Perl模块中的$r→request_body_file 方法。

client_body_in_single_buffer

语法:client_body_in_single_buffer

默认值:off

使用字段:http, server, location

这个指令(0.7.58版本)指定是否将客户端连接请求完整的放入一个缓冲区,当使用变量$request_body时推荐使用这个指令以减少复制操作。

如果无法将一个请求放入单个缓冲区,将会被放入磁盘。

client_body_buffer_size

语法:client_body_buffer_size the_size

默认值:8k/16k

使用字段:http, server, location

这个指令可以指定连接请求实体的缓冲区大小。

如果连接请求超过缓存区指定的值,那么这些请求实体的整体或部分将尝试写入一个临时文件。

默认值为两个内存分页大小值,根据平台的不同,可能是8k或16k。

client_body_temp_path

语法:client_body_temp_path dir-path [ level1 [ level2 [ level3 ]

默认值:client_body_temp

使用字段:http, server, location

指令指定连接请求实体试图写入的临时文件路径。

可以指定三级目录结构,如:

client_body_temp_path /spool/nginx/client_temp 1 2;

那么它的目录结构可能是这样:

/spool/nginx/client_temp/7/45/00000123457

client_body_timeout

语法:client_body_timeout time

默认值:60

使用字段:http, server, location

指令指定读取请求实体的超时时间。

这里的超时是指一个请求实体没有进入读取步骤,如果连接超过这个时间而客户端没有任何响应,Nginx将返回一个”Request time out” (408)错误

client_header_buffer_size

语法:client_header_buffer_size size

默认值:1k

使用字段:http, server

指令指定客户端请求头部的缓冲区大小

绝大多数情况下一个请求头不会大于1k

不过如果有来自于wap客户端的较大的cookie它可能会大于1k,Nginx将分配

给它一个更大的缓冲区,这个值可以在large_client_header_buffers里面设置。

client_header_timeout

语法:client_header_timeout time

默认值:60

使用字段:http, server

指令指定读取客户端请求头标题的超时时间。

这里的超时是指一个请求头没有进入读取步骤,如果连接超过这个时间而客户端没有任何响应,Nginx将返回一个”Request time out” (408)错误。

client_max_body_size

语法:client_max_body_size size

默认值:client_max_body_size 1m

使用字段:http, server, location

指令指定允许客户端连接的最大请求实体大小,它出现在请求头部的

Content-Length字段。

如果请求大于指定的值,客户端将收到一个”Request Entity Too Large” (413)错误。

记住,浏览器并不知道怎样显示这个错误。

default_type

语法: default_type MIME-type

默认值:default_type text/plain

使用字段:http, server, location

某个文件在标准MIME视图没有指定的情况下的默认MIME类型。

参考types。

directio

语法:directio [size|off]

默认值:directio off

使用字段:http, server, location

这个参数指定在读取文件大小大于指定值的文件时使用O_DIRECT(FreeBSD, Linux),F_NOCACHE(Mac OS X)或者调用directio()函数(Solaris),当一个请求用到这个参数时会禁用sendfile,通常这个参数用于大文件。

directio 4m;

error_page

语法:error_page code [ code… ] [ = | =answer-code ] uri | @named_location 默认值:no

使用字段:http, server, location, location 中的if字段

这个参数可以为错误代码指定相应的错误页面

error_page 404 /404.html;

error_page 502 503 504 /50x.html;

error_page 403 https://www.doczj.com/doc/f013664680.html,/forbidden.html;

error_page 404 = @fetch;

同样,你也可以修改返回的错误代码:

error_page 404 =200 /.empty.gif;

如果一个错误的响应经过代理或者FastCGI服务器并且这个服务器可以返回不

同的响应码,如200, 302, 401或404,那么可以指定响应码返回:

error_page 404 = /404.php;

如果在重定向时不需要改变URI,可以将错误页面重定向到一个命名的location 字段中:

location / (

error_page 404 = @fallback;

)

location @fallback (

proxy_pass http://backend;

)

if_modified_since

语法:if_modified_since [off|exact|before]

默认值:if_modified_since exact

使用字段:http, server, location

指令(0.7.24)定义如何将文件最后修改时间与请求头中的”If-Modified-Since”时间相比较。

?off :不检查请求头中的”If-Modified-Since”(0.7.34)。

?exact:精确匹配

?before:文件修改时间应小于请求头中的”If-Modified-Since”时间

internal

语法:internal

默认值:no

使用字段: location

internal指令指定某个location只能被“内部的”请求调用,外部的调用请求会返回”Not found” (404)

“内部的”是指下列类型:

?指令error_page重定向的请求。

?ngx_http_ssi_module模块中使用include virtual指令创建的某些子请求。

?ngx_http_rewrite_module模块中使用rewrite指令修改的请求。

一个防止错误页面被用户直接访问的例子:

error_page 404 /404.html;

location /404.html {

internal;

}

keepalive_timeout

语法:keepalive_timeout [ time ] [ time ]

默认值:keepalive_timeout 75

使用字段:http, server, location

参数的第一个值指定了客户端与服务器长连接的超时时间,超过这个时间,服务器将关闭连接。

参数的第二个值(可选)指定了应答头中Keep-Alive: timeout=time的time 值,这个值可以使一些浏览器知道什么时候关闭连接,以便服务器不用重复关闭,如果不指定这个参数,nginx不会在应答头中发送Keep-Alive信息。(但这并不是指怎样将一个连接“Keep-Alive”)

参数的这两个值可以不相同。

下面列出了一些服务器如何处理包含Keep-Alive的应答头:

?MSIE和Opera将Keep-Alive: timeout=N头忽略。

?MSIE保持一个连接大约60-65秒,然后发送一个TCP RST。

?Opera将一直保持一个连接处于活动状态。

?Mozilla将一个连接在N的基础上增加大约1-10秒。

?Konqueror保持一个连接大约N秒。

keepalive_requests

语法:keepalive_requests n

默认值:keepalive_requests 100

使用字段:http, server, location

服务器保持长连接的请求数。

large_client_header_buffers

语法:large_client_header_buffers number size

默认值:large_client_header_buffers 4 4k/8k

使用字段:http, server

指定客户端一些比较大的请求头使用的缓冲区数量和大小。

请求字段不能大于一个缓冲区大小,如果客户端发送一个比较大的头,nginx将返回”Request URI too large” (414)

同样,请求的头部最长字段不能大于一个缓冲区,否则服务器将返回”Bad request” (400)。

缓冲区只在需求时分开。

默认一个缓冲区大小为操作系统中分页文件大小,通常是4k或8k,如果一个连接请求最终将状态转换为keep-alive,它所占用的缓冲区将被释放。

limit_except

语法:limit_except methods {…}

默认值:no

使用字段:location

指令可以在location字段中做一些http动作的限制。

ngx_http_access_module和ngx_http_auth_basic_module模块有很强的访问控制功能。

limit_except GET {

allow 192.168.1.0/32;

deny all;

}

limit_rate

语法:limit_rate speed

默认值:no

使用字段:http, server, location, location中的if字段

限制将应答传送到客户端的速度,单位为字节/秒,限制仅对一个连接有效,即如果一个客户端打开2个连接,则它的速度是这个值乘以二。

由于一些不同的状况,可能要在server字段来限制部分连接的速度,那么这个参数并不适用,不过你可以选择设置$limit_rate变量的值来达到目的:

server {

if ($slow) {

set $limit_rate 4k;

}

}

同样可以通过设置X-Accel-Limit-Rate头(NginxXSendfile)来控制proxy_pass 返回的应答(http代理模块)。并且不借助X-Accel-Redirect头来完成。

limit_rate_after

语法:limit_rate_after time

默认值:limit_rate_after 1m

使用字段:http, server, location, location中的if字段

在应答一部分被传递后限制速度:

limit_rate_after 1m;

limit_rate 100k;

listen

语法(0.7.x):listen address:port [ default [ backlog=num | rcvbuf=size | sndbuf=size | accept_filter=filter | deferred | bind | ssl ] ]

语法(0.8.x):listen address:port [ default_server [ backlog=num |

rcvbuf=size | sndbuf=size | accept_filter=filter | deferred | bind | ssl ] ] 默认值:listen 80

使用字段:server

listen指令指定了server{…}字段中可以被访问到的ip地址及端口号,可以只

指定一个ip,一个端口,或者一个可解析的服务器名。

listen 127.0.0.1:8000;

listen 127.0.0.1;

listen 8000;

listen *:8000;

listen localhost:8000;

ipv6地址格式(0.7.36)在一个方括号中指定:

listen [::]:8000;

listen [fe80::1];

在linux中默认使用IPv4 to IPv6视图地址格式使IPv6的socket同样对应IPv4

的链路,例如, ::ffff:,示例, ::ffff:192.168.0.27对应192.168.0.27到一个IPv6地址。

如果你在listen指令中启用[::]:80IPv6地址格式监听80端口,在linux中默

认它也会监听IPv4端口,也就意味着IPv4和IPv6的地址都会被监听,如果你

在另外一个指令中指定IPv4的地址,你将会在重启nginx时得到一个“al ready bind address”错误。

在linux中,如果你想讲IPv4和IPv6地址分开监听,可以通过内核参数:

net.ipv6.bindv6only,默认这个值是0。通过sysctl将这个值设置为1。

注意:nginx实例(进程)在你修改上述参数之后可能会继续IPv4链路的传输,

你可能需要一个新的设置为IPv6和IPv4包处理方法,请修改nginx配置文件并

且重启nginx。

如果在其他server块(vhost)中你想通过下面这个指令来监听IPv4的地址:listen [::]:80;

监听IPv4的地址将会失败,解决这个问题的方法是在listen中,当使用IPv6

地址时增加ipv6only=on选项,并且在同一个server块中写一条监听IPv4地址

的指令:

修改配置文件应该是在你修改内核运行参数以后进行。

listen [::]:80 ipv6only=on; # 只监听IPv6链路

listen 80; # 这条指令将监听IPv4链路

在FreeBSD中默认是将IPv4和IPv6分离监听的,这样listen [::]:80仅监听IPv6的链路,如果你想同时进行IPv4地址的监听你可能需要另外写一条指令。通过使用default ipv6only=on选项可以在listen指令中指定仅监听IPv6地址,这样在这个server块中就可以指定IPv6监听地址,其他server块中同样可以

指定IPv4地址:

listen [2a02:750:5::123]:80;

listen [::]:80 default ipv6only=on;

如果只有ip地址指定,则默认端口为80。

如果指令有default参数,那么这个server块将是通过“地址:端口”来进行访问的默认服务器,这对于你想为那些不匹配server_name指令中的主机名指定

默认server块的虚拟主机(基于域名)非常有用,如果没有指令带有default

参数,那么默认服务器将使用第一个server块。

listen允许一些不同的参数,即系统调用listen(2)和bind(2)中指定的参数,这些参数必须用在default参数之后:

1.backlog=num –指定调用listen(2)时backlog的值,默认为-1。

2.rcvbuf=size –为正在监听的端口指定SO_RCVBUF。

3.sndbuf=size –为正在监听的端口指定SO_SNDBUF。

4.accept_filter=filter –指定accept-filter。

o仅用于FreeBSD,可以有两个过滤器,dataready与httcodeady,仅在最终版本的FreeBSD(FreeBSD: 6.0, 5.4-STABLE与

4.11-STABLE)上,为他们发送-HUP信号可能会改变accept-filter。

5.deferred –在linux系统上延迟accept(2)调用并使用一个辅助的参数:

TCP_DEFER_ACCEPT。

6.bind –将bind(2)分开调用。

o主要指这里的“地址:端口”,实际上如果定义了不同的指令监听同一个端口,但是每个不同的地址和某条指令均监听为这个端口

的所有地址(*:port),那么nginx只将bind(2)调用于*:port。

这种情况下通过系统调用 getsockname()确定哪个地址上有连接

到达,但是如果使用了parameters backlog, rcvbuf, sndbuf,

accept_filter或deferred这些参数,那么将总是将这个“地址:

端口”分开调用。

7.ssl –参数(0.7.14)不将listen(2)和bind(2)系统调用关联。

o被指定这个参数的listen将被允许工作在SSL模式,这将允许服务器同时工作在HTTP和HTTPS两种协议下,例如:

listen 80;

listen 443 default ssl;

一个使用这些参数的完整例子:

listen 127.0.0.1 default accept_filter=dataready backlog=1024;

0.8.21版本以后nginx可以监听unix套接口:

listen unix:/tmp/nginx1.sock;

location

语法:location [=|~|~*|^~|@] /uri/ { … }

默认值:no

使用字段:server

这个参数根据URI的不同需求来进行配置,可以使用字符串与正则表达式匹配,如果要使用正则表达式,你必须指定下列前缀:

1.~* 不区分大小写。

2.~ 区分大小写。

要确定该指令匹配特定的查询,程序将首先对字符串进行匹配,字符串匹配将作为查询的开始,最确切的匹配将被使用。然后,正则表达式的匹配查询开始,匹配查询的第一个正则表达式找到后会停止搜索,如果没有找到正则表达式,将使用字符串的搜索结果。

在一些操作系统,如Mac OS X和Cygwin,字符串将通过不区分大小写的方式完成匹配(0.7.7),但是,比较仅限于单字节的语言环境。

正则表达式可以包含捕获(0.7.40),并用于其它指令中。

可以使用“^~”标记禁止在字符串匹配后检查正则表达式,如果最确切的匹配location有这个标记,那么正则表达式不会被检查。

使用“=”标记可以在URI和location之间定义精确的匹配,在精确匹配完成后并不进行额外的搜索,例如有请求“/”发生,则可以使用“location = /”来加速这个处理。

即使没有“=”和“^~”标记,精确的匹配location在找到后同样会停止查询。下面是各种查询方式的总结:

1.前缀“=”表示精确匹配查询,如果找到,立即停止查询。

2.指令仍然使用标准字符串,如果匹配使用“^~”前缀,停止查询。

3.正则表达式按照他们在配置文件中定义的顺序。

4.如果第三条产生一个匹配,这个匹配将被使用,否则将使用第二条的匹配。

例:

location = / {

# 只匹配 / 的查询.

[ configuration A ]

}

location / {

# 匹配任何以 / 开始的查询,但是正则表达式与一些较长的字符串将被首先匹配。

[ configuration B ]

}

location ^~ /images/ {

# 匹配任何以 /images/ 开始的查询并且停止搜索,不检查正则表达式。

[ configuration C ]

}

location ~* \.(gif|jpg|jpeg)$ {

# 匹配任何以gif, jpg, or jpeg结尾的文件,但是所有 /images/ 目录的请求将在Configuration C中处理。

[ configuration D ]

}

各请求的处理如下例:

?/ → configuration A

?/documents/document.html → configuration B

?/images/1.gif → configuration C

?/documents/1.jpg → configuration D

注意你可以以任何顺序定义这4个配置并且匹配结果是相同的,但当使用嵌套的location结构时可能会将配置文件变的复杂并且产生一些比较意外的结果。

标记“@”指定一个命名的location,这种location并不会在正常请求中执行,它们仅使用在内部重定向请求中。(查看error_page和try_files)

log_not_found

语法:log_not_found [on|off]

默认值:log_not_found on

使用字段:http, server, location

指令指定是否将一些文件没有找到的错误信息写入error_log指定的文件中。

log_subrequest

语法:log_subrequest [on|off]

默认值:log_subrequest off

使用字段:http, server, location

指令指定是否将一些经过rewrite rules和/或SSI requests的子请求日志写入access_log指定的文件中。

msie_padding

语法:msie_padding [on|off]

默认值:msie_padding on

使用字段:http, server, location

指令指定开启或关闭MSIE浏览器和chrome浏览器(0.8.25+)的msie_padding 特征,当这个功能开启,nginx将为响应实体分配最小512字节,以便响应大于或等于400的状态代码。

指令预防在MSIE和chrome浏览器中激活“友好的”HTTP错误页面,以便不在服务器端隐藏更多的错误信息。

msie_refresh

语法: msie_refresh [on|off]

默认值:msie_refresh off

使用字段:http, server, location

指令允许或拒绝为MSIE发布一个refresh而不是做一次redirect

open_file_cache

语法:open_file_cache max = N [inactive = time] | off

默认值:open_file_cache off

使用字段:http, server, location

这个指令指定缓存是否启用,如果启用,将记录文件以下信息:?打开的文件描述符,大小信息和修改时间。

?存在的目录信息。

?在搜索文件过程中的错误信息–没有这个文件、无法正确读取,参考open_file_cache_errors

指令选项:

?max - 指定缓存的最大数目,如果缓存溢出,最长使用过的文件(LRU)将被移除。

?inactive - 指定缓存文件被移除的时间,如果在这段时间内文件没被下载,默认为60秒。

?off - 禁止缓存。

例:

open_file_cache max=1000 inactive=20s;

open_file_cache_valid 30s;

open_file_cache_min_uses 2;

open_file_cache_errors on;

open_file_cache_errors

语法:open_file_cache_errors on | off

默认值:open_file_cache_errors off

使用字段:http, server, location

这个指令指定是否在搜索一个文件是记录cache错误。

open_file_cache_min_uses

语法:open_file_cache_min_uses number

默认值:open_file_cache_min_uses 1

使用字段:http, server, location

这个指令指定了在open_file_cache指令无效的参数中一定的时间范围内可以使用的最小文件数,如果使用更大的值,文件描述符在cache中总是打开状态。

open_file_cache_valid

语法:open_file_cache_valid time

默认值:open_file_cache_valid 60

使用字段:http, server, location

这个指令指定了何时需要检查open_file_cache中缓存项目的有效信息。

optimize_server_names

语法:optimize_server_names [ on|off ]

默认值:optimize_server_names on

使用字段:http, server

这个指令指定是否在基于域名的虚拟主机中开启最优化的主机名检查。

尤其是检查影响到使用主机名的重定向,如果开启最优化,那么所有基于域名的虚拟主机监听的一个“地址:端口对”具有相同的配置,这样在请求执行的时候并不进行再次检查,重定向会使用第一个server name。

如果重定向必须使用主机名并且在客户端检查通过,那么这个参数必须设置为off。

注意:这个参数不建议在nginx 0.7.x版本中使用,请使用

server_name_in_redirect。

port_in_redirect

语法:port_in_redirect [ on|off ]

默认值:port_in_redirect on

使用字段:http, server, location

这个指令指定是否在让nginx在重定向操作中对端口进行操作。

如果这个指令设置为off,在重定向的请求中nginx不会在url中添加端口。

post_action

语法:post_action [ uri|off ]

默认值:post_action off

使用字段:http, server, location, location中的if字段

为当前完成请求的子请求定义一个URI。

location /protected_files {

internal;

proxy_pass http://127.0.0.2;

post_action /protected_done;

}

# 发送post_action 请求到FastCGI后端进行登录验证。

location /protected_done {

internal;

fastcgi_pass 127.0.0.1:9000;

}

recursive_error_pages

语法:recursive_error_pages [on|off]

默认值:recursive_error_pages off

使用字段:http, server, location

recursive_error_pages指定启用除第一条error_page指令以外其他的error_page。

resolver

语法:resolver address

默认值:no

使用字段:http, server, location

指定DNS服务器地址,如:

resolver 127.0.0.1;

resolver_timeout

语法:resolver_timeout time

默认值:30s

使用字段:http, server, location

解析超时时间。如:

resolver_timeout 5s;

root

语法:root path

默认值:root html

使用字段:http, server, location ,location中的if字段

请求到达后的文件根目录。

下例中:

location /i/ {

root /spool/w3;

}

如果请求”/i/top.gif”文件,nginx将转到”/spool/w3/i/top.gif”文件。你可以在参数中使用变量。

注意:在请求中root会添加这个location到它的值后面,即”/i/top.gif”并不会请求”/spool/w3/top.gif”文件,如果要实现上述类似于apache alias 的功能,可以使用alias指令。

satisfy

语法: satisfy [ all | any ]

默认值: satisfy all

使用字段:http, server, location

可用版本:≥ 0.6.25

如果在一个字段中同时使用了Access模块和Auth Basic模块的指令,可以使用这个指令确定一种验证方式:

?all - 必须同时匹配Access和Auth Basic中指令指定的权限。

?any - 具有Access 或 Auth Basic指令任一权限即可通过匹配

location / {

satisfy any;

allow 192.168.1.0/32;

deny all;

auth_basic "closed site";

auth_basic_user_file conf/htpasswd;

}

satisfy_any

语法:satisfy_any [ on|off ]

默认值:satisfy_any off

使用字段:location

0.6.25版本以后请使用satisfy

send_timeout

语法:send_timeout the time

默认值:send_timeout 60

使用字段:http, server, location

指令指定了发送给客户端应答后的超时时间,Timeout是指没有进入完整established状态,只完成了两次握手,如果超过这个时间客户端没有任何响应,nginx将关闭连接。

sendfile

语法:sendfile [ on|off ]

默认值:sendfile off

使用字段:http, server, location

是否启用sendfile()函数。

server

语法:server {…}

默认值:no

使用字段:http

server字段包含虚拟主机的配置。

没有明确的机制来分开基于域名(请求中的主机头)和基于IP的虚拟主机。

可以通过listen指令来指定必须连接到这个server块的所有地址和端口,并且在server_name指令中可以指定所有的域名。

server_name

语法:server_name name [… ]

默认值:server_name hostname

使用字段:server

这个指令有两个作用:

一、将HTTP请求的主机头与在nginx配置文件中的server{…}字段中指定的参数进行匹配,并且找出第一个匹配结果。这就是如何定义虚拟主机的方法,域名遵循下述优先级规则:

1.完整匹配的名称。

2.名称开始于一个文件通配符:*https://www.doczj.com/doc/f013664680.html,。

3.名称结束于一个文件通配符:www.example.*。

4.使用正则表达式的名称。

如果没有匹配的结果,nginx配置文件将安装以下优先级使用[#server server { … }]字段:

1.listen指令被标记为default的server字段。

2.第一个出现listen(或者默认的listen 80)的server字段。

二、如果server_name_in_redirect被设置,这个指令将用于设置HTTP重定向的服务器名。

例:

server {

server_name https://www.doczj.com/doc/f013664680.html, https://www.doczj.com/doc/f013664680.html,;

}

第一个名称为服务器的基本名称,默认名称为机器的hostname。

当然,可以使用文件通配符:

server {

server_name https://www.doczj.com/doc/f013664680.html, *https://www.doczj.com/doc/f013664680.html, www.example.*;

}

Windows下Nginx的安装与配置

Windows下Nginx的安装与配置 Windows下Nginx的安装与配置 Nginx ("engine x") 是一款高性能的,轻量级的HTTP Web服务器和反向代理服务器及电子邮件IMAP/POP3/SMTP代理服务器。 Nginx是由俄罗斯的程序设计师Igor Sysoev 所开发,为俄罗斯访问量第二的Rambler.ru 站点开发的,它已经在该站点运行超过四年多时间了,Igor 将源代码以类BSD许可证的形式发布。 自Nginx 发布四年来,Nginx 已经因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。Nginx 超越Apache的高性能和稳定性,使得国内使用Nginx 作为Web 服务器的网站也越来越多。 目前国内各大门户网站已经部署了Nginx,如新浪、网易、腾讯等;新近发现Nginx 技术在国内日趋火热,越来越多的网站开始应用部署Nginx。 一、首先去官网下载nginx1.0.11的Windows版本,官网下载: https://www.doczj.com/doc/f013664680.html,/download/nginx-1.0.11.zip 下载到软件包后,解压nginx-nginx1.0.11.zip 包到你喜欢的根目录,并将目录名改为nginx。 然后,执行下列操作: cd nginx start nginx 这样,nginx 服务就启动了。打开任务管理器,查看nginx.exe 进程,有二个进程会显示,占用系统资源,那是相当的少。然后再打开浏览器,输入http://127.0.0.1/就可以看到nginx 的欢迎页面了,非常友好 nginx -s stop // 停止nginx nginx -s reload // 重新加载配置文件 nginx -s quit // 退出nginx 二、接下来就是配置nginx的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;

nginx设置rewrite规则

Nginx 设置rewrite规则 Windows下环境为wamp ,在wamp 环境下,设置rewite规则时,很是简单,只需要打开Apache配置中的rewrite规则,项目中使用rewrite规则时只需创建.htaccess文件,在文件中编写规则,Apache会自动进行解析,但是在linux下则有些不一样。 Linux下环境若是lamp,则和wamp下是相同的,但当环境为lnmp时,需要注意进行如下配置方法: 根据所安装的环境情况,如果环境是lnmp集成环境,在配置rewrite规则时,因为集成环境,在安装完毕后,在安装的目录/usr/local/nginx/conf下,会生成一个文件“wordparss”,这个文件中是专门用于写rewrite规则所用,你可以在这个文件中书写rewrite规则,nginx 的rewrite规则与Apache的规则基本是相同的,只是在文件中书写的方法不同,wordpaess 问件中默认是有一个规则的,如: 利用location加载访问路径,“/”,指代由访问路径的根目录开始, 用if对加载的路径$request_filename 进行验证: 1 、-f 和!-f 用来判断文件是否存在 2、-d 和!-d 用来判断目录是否存在 3 、-e 和!-e 用来判断文件或目录是否存在 4、-x 和!-x 用来判断文件是否可执行 Flag标记: 1、last 相当于Apache里的[L]标记,表示完成rewrite 2、break 终止匹配, 不再匹配后面的规则 3、redirect 返回302临时重定向地址栏会显示跳转后的地址 4、permanent 返回301永久重定向地址栏会显示跳转后的地址 因为在lnmp集成环境下要配置虚拟域名是可以进行自动生成的,生成后会在/usr/local/nginx/conf/vhost 下生成一个以虚拟域名的名字的文件,如:lin_hp.its.conf,而所对应的rewrite规则最好在与域名相对应的配置文件中进行配置,这样不会说,如果有多个域名时,他们所对应的rewrite规则不同,在公共的wordpress文件中配置引起冲突,所配置的方法与在wprdpress文件中是相同的,如:

nginx安装手册

Nginx安装手册 1nginx安装环境 nginx是C语言开发,建议在linux上运行,本教程使用Centos6.5作为安装环境。 ?gcc 安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:yum install gcc-c++ ?PCRE PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。yum install -y pcre pcre-devel 注:pcre-devel是使用pcre开发的一个二次开发库。nginx也需要此库。 ?zlib zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。 yum install -y zlib zlib-devel ?openssl OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。 nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux 安装openssl库。 yum install -y openssl openssl-devel 2编译安装 将nginx-1.8.0.tar.gz拷贝至linux服务器。 解压: tar -zxvf nginx-1.8.0.tar.gz cd nginx-1.8.0 1、configure ./configure --help查询详细参数(参考本教程附录部分:nginx编译参数) 参数设置如下: ./configure \

nginx配置解析详解(一)

nginx配置解析详解(一) 现在针对nginx源码分析的blog和文章已经很多了,之前我也看过不少,大家的分析都很不错。太多重复的内容就不写了,主要想针对在我分析代码和查阅blog的过程中,发现的一些比较晦涩或者某些细节有待展开讨论的地方,给出我的自己理解和看法,希望跟大家交流和学习。 使用的nginx版本是nginx-1.0.6,我最开始看的代码是0.7.62,新的版本在功能和稳定性上做了很多的工作。在分析的时候,我尽量简单明了,不太重要的地方一带而过,具体地大家可以去读代码。相对复杂或者晦涩的地方,将详细展开。 首先我们从配置文件开始,下面的分析是建立在网友对nginx的配置文件结构有大概熟悉为前提,这样才可以很好的理解代码。这里有必要提醒一点:原始代码目录中 ngx_modules这个结构,是找不到它的定义和初始化,要看到它,你必须执行configure,make,在原来的代码目录下会出现一个objs文件夹,里面的3个文件ngx_auto_config.h,ngx_auto_headers.h,ngx_modules.c,需要在建source insight工程时也包含进去,这样有利于我们把握整个代码结构。有意思的是,nginx的configure文件是作者手工写的,里面有许多管理代码工程的方法,有时间的话,也是值得学习下的。 1.ngx_cycle_t *ngx_init_cycle(ngx_cycle_t *old_cycle); 配置文件的解析相关的处理主要在ngx_init_cycle函数中被调用。既然如此,我们就先说说ngx_init_cycle函数吧。 它需要一个参数类型为ngx_cycle_t *,返回值也是一个ngx_cycle_t*,与此同时我们注意到参数名为old_cycle,那么这个函数的作用是啥呢?很明显是由old得到一个new。其中ngx_cycle_t的结构保存一些全局的配置和信息。 这个函数具体作用将在reconfig(重读配置文件)的时候得到体现,可以理解为old_cycle 是当前正在使用的配置信息,当配置文件做了某些修改之后,ngx_init_cycle通过old_cycle 中的一些数据,对new_cycle进行一些设置,在经过进一步的配置解析之后,就可以得到一个new cycle。 2.char *ngx_conf_parse(ngx_conf_t *cf, ngx_str_t *filename) 当我们使用sourceinsight查看这个函数的调用情况时,会发现调用它的地方很多。其实,入口点就在ngx_init_cycle中对ngx_conf_parse调用,后面的所有的调用可以看作是在此之后的递归调用。为什么会是这个样子呢?原因在于nginx是一边读取配置信息,一边解析执行相关的处理,具体一点讲,就是“读一行,执行一行”,一行的定义在这里是指以分号或者是“{”和“}”等结尾的一行,例如:我们解析到http {},我们就调用针对httpblock的处理,在处理的时候我们又会碰到server {},自然就会调用server block的处理。。。以此类推!。

nginx虚拟主机和文件服务器的配置

Nginx文件服务器和虚拟主机的配置 https://www.doczj.com/doc/f013664680.html,的配置文件: 1.游戏服务器: server { listen 80; server_name https://www.doczj.com/doc/f013664680.html,; index index.html index.htm index.php; root /data/web/fc/game3w/releases1/public; location ~ .*\.php$ { include fcgi.conf; fastcgi_pass 127.0.0.1:10080; fastcgi_index index.php; expires off; } access_log /data/logs/https://www.doczj.com/doc/f013664680.html,.log access; } 2.客户端的配置: server { listen 80; server_name https://www.doczj.com/doc/f013664680.html,; index index.html index.htm index.php; root /data/web/fc/resource; charset utf-8; #expires 2h; location ~* .svn$ { return 404; } location ~ .*\.swf$ { expires 365d; } location ~ .*\.css$ { expires 365d; } location ~ .*\.xml$ { expires 365d;

} location ~ .*\.js$ { expires 365d; } location ~ .*\.jpg$ { expires 365d; } location ~ .*\.gif$ { expires 365d; } location ~ .*\.png$ { expires 365d; } location ~ .*\.mp3$ { expires 365d; } location ~ .*\.game$ { expires 365d; } location ~ .*\.lib$ { expires 365d; } access_log off; } 3.文件服务器的配置: server { listen 9000; server_name 192.168.26.8; location / { autoindex on; autoindex_exact_size off; autoindex_localtime on; index index.html index.htm index.php; root /data/server/trunk/bin/logs/; allow all; } }

Nginx系列讲解

Nginx系列 一信号与配置 一、Nginx与信号 Nginx支持平滑重启,相比于Apache,修改了配置文件后可以不需要先停止程序,再重新启动。 1、启动 nginx –c nginx.conf 其中,-c nginx.conf可以省略不写。如果省略,则默认加载安装目录下的conf子目录中的nginx.conf。 2、停止 停止的方式有很多种,kill时传入不同的信号来结束或者平滑重启。Nginx的进程号记录在Pid文件中,Pid文件的位置可以在conf/nginx.conf中找到。如下图: 当然,也可以根据 ps –ef | grep nginx 来查找Nginx的进程号。我们可以通过kill命令来结束Nginx。 从容停止Nginx: kill –QUIT Nginx进程ID 或 kill – QUIT /usr/local/nginx/logs/nginx.pid 快速停止Nginx: kill –TERM Nginx进程ID 或

kill – TERM /usr/local/nginx/logs/nginx.pid 或 kill –INT Nginx进程ID 或 kill – INT /usr/local/nginx/logs/nginx.pid 强制停止Nginx: kill –9 Nginx进程ID 或 kill -9 /usr/local/nginx/logs/nginx.pid 或 pkill -9 nginx 3、重启 如果修改了Nginx的配置文件,想要重启Nginx。同样可以使用kill命令来传递信号。不过,在此之前,我强烈建议先检查并测试配置文件是否正确。 测试配置文件: nginx –t –c conf/nginx.conf 若提示unknow directive *** in conf/nginx.conf:55. Configuration file conf/nginx.conf test failed,则证明在第55行的***是非法的,需要修改。 若提示the configuration file conf/nginx.conf syntax is ok. Configuration file conf/nginx.conf test is successful,则证明配置文件测试通过,可以重启Nginx了。 平滑重启Nginx: kill –HUP Nginx进程ID 或

Nginx与PHP(FastCGI)的安装、配置与优化

Nginx与PHP(FastCGI)的安装、配置与优化 FastCGI的介绍和工作原理 首先简单的介绍下FastCGI: FastCGI是语言无关的、可伸缩结构的CGI开放扩展,其主要行为是将CGI解释器进行保持在内存中并因此获得较高的性能。众所周知,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail-Over特性等。 FastCGI的工作原理是: (1)FastCGI进程管理器自身初始化,启动多个CGI解释器进程(多个php-cgi进程)并等待来自Web Server的连接。在文本中,采用PHP-FPM进程管理器启动多个php-cgi FastCGI进程。启动php-cgi FastCGI进程时,可以配置以TCP和UNIX套接字两种方式启动。 (2)当客户端请求达到Web服务器(Nginx)时,Web服务器将请求采用TCP协议或UNIX 套接字方式转发到FastCGI主进程,FastCGI主进程选择并连接到一个CGI解释器(子进程)。Web服务器将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。 (3)FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web服务器(Nginx)。当FastCGI子进程关闭连接时,请求便告知处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理的下一个连接。而在一般的普通CGI模式中,php-cgi在此便退出了。 PHP-FPM PHP-FPM是一个PHP FastCGI管理器,是只用于PHP的,可以在 https://www.doczj.com/doc/f013664680.html,/downloads.php下载得到.PHP-FPM其实是PHP源代码的一个补丁,旨在将FastCGI进程管理整合进PHP包中。必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。

window下nginx配置

原来一直以为nginx只能在Linux下搭建,最近查了些资料才恍然大悟,Windows下其实也可以跑nginx。当你的网站访问量越来越高的时候,一台服务器已经没有办法承受流量压力,后果可想而知,怎么办呢?那就增加几台服务器来做负载吧。但当下的硬件设施又是贵得离谱,比如F5,所以这种情况下,免费的nginx成了我们不错的选择,nginx目前好多门户网站与大访问量的网站都在使用做为HTTP服务器,所以nginx是相当优秀的…… 实验环境:(2台服务器) 第一台: 系统:Win2003 nginx:nginx/Windows-0.8.32 IP:192.168.0.51 环境:本地 第二台: 系统:Win2003 IP:192.168.0.52 环境:远程 说明: 本次测试,软件nginx放在本地(192.168.0.51),也就是说放在域名绑定的那台服务器,这台服务器的IIS不能使用80端口,因为等一下nginx软件要使用80这个端口。(为了方便,我将本机的hosts文件添加了我要测试的域名192.168.0.51 https://www.doczj.com/doc/f013664680.html,) 下载nginx的地址如下: nginx下载:https://www.doczj.com/doc/f013664680.html,/ 下载解压到C:\,把目录名改成nginx 一切准备就绪,开始实验: No.1: 在本地(192.168.0.51)这台服务器IIS创建一个网站,使用端口为808,如下图:

IIS 网站绑定设置图 No.2: 在远程192.168.0.52的IIS创建一个网站,使用端口为80,如下图: No.3: 好了,以上已经设置好两台服务器的IIS了,下面配置nginx软件来实现网站负载均衡,打开如下文件: C:\nginx\conf\nginx.conf 1、找到内容server { 在它的上面加入如下内容:

linux下Nginx+tomcat整合的安装与配置

linux下Nginx+tomcat整合的安装与配置 目的:搭建Nginx与tomcat整合,用Nginx代替apache 步骤: 一、安装Tomcat和JDK 1、上传apache-tomcat-6.0.18.tar.gz和jdk-6u12-linux-i586.bin至/usr/local 2、执行如下命令安装tomcat: 查看 打印? 1. 2.#cd /usr/local 3.#tar zxvf apache-tomcat-6.0.18.tar.gz 解压完成后将apache-tomcat-6.0.18重命名为tomcat 3、执行如下命令安装JDK: 查看 打印? 1. 2.#./jdk-6u12-linux-i586.bin 4、配置环境变量: 编辑/etc下的profile文件,加上如下内容: 查看 打印? 1. 2.JAVA_HOME="/usr/local/jdk1.6.0_12" 3.CLASS_PATH="$JAVA_HOME/lib:$JAVA_HOME/jre/lib" 4.PATH=".:$PATH:$JAVA_HOME/bin " 5. 6.CATALINA_HOME="/usr/local/tomcat" 7.export JAVA_HOME CATALINA_HOME 5、启动tomcat并输入http://localhost:8080,如果看到猫的页面即tomcat和jdk安装成功 6、新建文件目录/home/www为网站存放目录,设置server.xml文件,在Host name="localhost"处将appBase=的指向路径改为/home/www/web

Nginx高级配置

Nginx高级配置 1. Nginx连接后端的方式:反向代理(proxy_pass)、直连 fastcgi(fastcgi_pass) 例子: fastcgi_pass backend1; proxy_pass http://backend2; location块中配置此项,表示用反向代理或直连fastcgi的方式连接后端服务,其中backend1、backend2为upstream配置,其中配置下游的ip&port列表和调度参数,见下文。 注意:fastcgi_pass与proxy_pass是互斥配置,不能同时生效。 2. Nginx调度与负载均衡配置(upstream 配置) 1) 轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器。weight指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况,weight默认值为1。 例如: upstreambakend { server 192.168.0.14 weight=10; server 192.168.0.15 weight=10; } 2) ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。 例如: upstreambakend { ip_hash; server 192.168.0.14:88; server 192.168.0.15:80; } 3) hash 每个请求按访问$hash_seed的hash结果分配。 例如: upstreambakend { hash $hash_seed; server 192.168.0.14:88; server 192.168.0.15:80;

NGinx分布式部署测试实例图解

https://www.doczj.com/doc/f013664680.html,+Mvc+NGinx+IIS分布式部署和负载平衡实例图解 目的:在IIS中创建四个相同的网站,浏览器访问同一个地址,通过NGinx转到不同的IIS 网站。 测试条件: Windows 7 X64旗舰版+Visual Studio 2017专业版 1、创建https://www.doczj.com/doc/f013664680.html, +Mvc WebApplication 在VS运行后的页面效果如下:

2、发布网站 3、IIS中部署四个网站 创建三个应用程序池,端口分别为: 8001、8002、8003,8004分别对应四个网站。 为区分三个网站,把Index.cshtml文件中的“Nginx测试程序”这行字分别改为:Nginx测试程序--------1 Nginx测试程序--------2 Nginx测试程序--------3 Nginx测试程序--------4 如下图: 部署四个网站后,打开页面效果如下:

到此,说明四个网站部署后单独访问都没有问题。下面开始部署NGInx的负载平衡。

4、NGInx的安装 4.1、下载nginx-1.1 5.1 下载后解压到D:\nginx文件夹,解压后的文件夹如下: 4.2、修改配置文件nginx.conf nginx.conf文件位于D:\nginx\conf目录下,nginx.conf默认内容如下。用记事本打开文件,nginx.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" '

Nginx-1.0.15负载均衡安装配置

nginx-1.0.15负载均衡安装配置 OS:ubuntu 1、取得软件 pcre-8.30.zip nginx-1.0.15.tar.gz apt-get install gcclibpcre*zlib 2、安装rewrite的支持库pcre unzip pcre-8.30.zip cd pcre-8.30 ./configure make make install 3、配置nginx.conf cat /usr/local/nginx/conf/nginx.conf | grep -Ev '(#|^$)' worker_processes 1; events { worker_connections 1024; } http { includemime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; upstream https://www.doczj.com/doc/f013664680.html, { server 10.0.0.252:8080; server 10.0.0.253:8080; server 10.0.0.105:8080; } server { listen 80; server_name https://www.doczj.com/doc/f013664680.html,; location ~ ^/$ { rewrite ^/(.*) /jboss/ break; proxy_pass https://www.doczj.com/doc/f013664680.html,; } } }

4、启动nginx服务 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

Nginx+PHP+MySQL详细配置(图)

Nginx是一个高性能的HTTP和反向代理服务器,同时还是IMAP/POP3/SMTP代理服务器,该程序由俄罗斯Rambler.ru 站点开发,Nginx因为性能稳定、低系统资源消耗而闻名,近几年Nginx在国内已经成炙热化状态,比如像腾讯、网易、51CTO、迅雷、当当网、51、人人网等诸多大型网站都已经使用Nginx来做Web服务器,所以我们要学会运用Nginx还是非常有必要的,下面我们一起来看一下Nginx是如何在Linux平台上搭建的 安装前首先使用yum命令安装、升级所需的程序库 yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel ssse2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers 一、安装MySQLssss 目前web服务器已经很少有跑静态页面的,如果要跑动态网站那当然就离不开数据库,虽然在以前文章中有写MySQL是怎么安装的,但是感觉好久没装MySQL,现在只把步骤贴出来,就不做过多的讲解了 #useradd mysql #tar zxvf mysql-5.0.40.tar.gz #cd mysql-5.0.40 #./configure --prefix=/usr/local/mysql #make && make install #/usr/local/mysql/bin/mysql_install_db --user=mysql //初始化MySQL数据库 #chown -R mysql /usr/local/mysql/var #/usr/local/mysql/bin/mysqld_safe & //启动MySQL #/usr/local/mysql/bin/mysqladmin -u root password 123456 //设置MySQL密码 #cp support-files/https://www.doczj.com/doc/f013664680.html,f /etc/https://www.doczj.com/doc/f013664680.html,f #echo "/usr/local/mysql/bin/mysqld_safe &" >>/etc/rc.local

nginx负载均衡master配置文件nginx.conf

#user nobody; worker_processes auto; #error_log logs/error.log; error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; worker_rlimit_nofile 100000; events { use epoll; worker_connections 204800; } http { ## 用户的IP 地址$binary_remote_addr 作为Key,每个IP 地址最多有50 个并发连接 ## 你想开几千个连接刷死我?超过50 个连接,直接返回503 错误给你,根本不处理你的请求了 limit_conn_zone $binary_remote_addr zone=TotalConnLimitZone:10m ; #limit_conn TotalConnLimitZone 50; limit_conn TotalConnLimitZone 500; limit_conn_log_level notice; ## 用户的IP 地址$binary_remote_addr 作为Key,每个IP 地址每分钟处理50 个请求## 你想用程序每秒几百次的刷我,没戏,再快了就不处理了,直接返回503 错误给你 #limit_req_zone $binary_remote_addr zone=ConnLimitZone:10m rate=200r/m; limit_req_zone $binary_remote_addr zone=ConnLimitZone:10m rate=2000r/m; limit_req_log_level notice; #include mime.types; #default_type application/octet-stream; #access_log logs/access.log main; #server_tokens off; #sendfile on; #tcp_nopush on; #keepalive_timeout 0; #keepalive_timeout 65; server_tokens off; include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] $request ' '"$status" $body_bytes_sent "$http_referer" '

nginx配置方案

WEB服务器安装方案 平台搭建环境: CentOS5.2 32/x86_64 GNU/Linux (32/64操作系统均通过,推荐使用64位操作系统) 一、系统安装 1. 系统分区建议 /boot 256M swap 2GB / 20GB /usr 40GB (用于安装软件) /data 剩余所有空间. 二、编译安装基本环境 1. 安装准备 1.1 系统约定 软件源代码包存放位置 /usr/local/src 源码包编译安装位置(prefix) /usr/local/software_ name 脚本以及维护程序存放位置 /usr/local/sbin MySQL 数据库位置 /data/mysql/(可按情况设置) 网站根目录/data/www/htdocs(可按情况设置) 网站日志根目录/data/www/logs(可按情况设置) Nginx运行账户www 1.2创建网站账号及相关存放目录 /usr/sbin/groupadd www /usr/sbin/useradd -g www www mkdir -p /data/www/html mkdir -p /data/www/log chown -R www:www /data/www/html chown -R www:www /data/www/log 1.3系统环境部署及调整 # tail -n100 /var/log/messages (检查有无系统级错误信息) # dmesg (检查硬件设备是否有错误信息) # ifconfig(检查网卡设置是否正确) # ping 192.168.95.1 (检查网络是否正常) install_software_name.sh //存放编译参数脚本习惯将所有编译脚本存放在install_software_name.sh便于升级和更新软件. 1.4定时校正服务器时钟,定时与中国国家授时中心授时服务器同步 #crontab -e

【Nginx服务器的编译安装与配置】 安装配置服务器失败

【Nginx服务器的编译安装与配置】安装配置服务器失败 Nginx 是一个很强大的轻量级、高性能Web和反向代理服务器,由俄罗斯人开发而成。它具有很多非常优越的特性:在高连接并发的情况下,Nginx是Apache服务器不错的替代品。而且还可以作为负载均衡服务器,代码用C语言完成,运行效率非常高,还可以做邮件代理服务器。下面是小编跟大家分享的是Nginx服务器的编译安装与配置,欢迎大家来阅读学习~ Nginx服务器的编译安装与配置 工具/原料 Linux服务器或虚拟机一台(这里使用的CentOS6.5) Nginx源码包(这里使用1.44的版本,下载链接:H://pan.baidu/s/1qWoe2te 密码:fqji) 方法/步骤 1要编译安装Nginx,首先我们要安装依赖包pcre-devel 和zlib-devel: # yum install pcre-devel zlib-devel -y 程序默认是使用nobody 身份运行的,我们建议使用nginx 用户来运行,首先添加Nginx组和用户,不创建家目录,不允许登陆系统 # groupadd nginx # useradd -M -s /sbin/nologin -g nginx nginx

2准备工作完成后就是下载编译安装Nginx了,可以从我提供的网盘下载,也可以去Nginx的官网下载。 首先解压源码包: # tar xf nginx-1.4.4.tar.gz 然后cd 到解压后的目录就可以执行./configure 了 # cd nginx-1.4.4 指定安装目录和运行时用的属主和属组,并启用状态监控模块等 # ./configure \ --prefix=/usr/local/nginx \ --pid-path=/var/run/nginx/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --user=nginx \ --group=nginx \ --with-H_ssl_module \ --with-H_flv_module \

Nginx+Tomcat配置

Nginx+Tomcat配置 为什么使用Nginx? Apache ?经典的Web服务器 ?除了慢没有别的缺点了 ?Apache2对fcgi支持并不好 ?非常好用的proxy和proxy_ajp(很多人用它作为tomcat的前端) ?不支持epoll(这年头,epoll几乎是性能的必备) Nginx ?速度快,占用资源少 ?杀手级的proxy和rewrite ?非常不错的静态文件能力 ?最适合作为整个网站的前端服务(将php、svn等不同请求发送往后端apache) ?其他功能马马虎虎 代理服务器,也是一个 IMAP/POP3/SMTP代理服务器。已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而被人们广泛使用了。 大多数人选择它主要考虑到的是它的高并发和负载均衡。 安装Nginx 1. tar zxvf nginx0.8.36.tar.gz 2、编译安装nginx cd nginx-0.7.44 ./configure --with-http_stub_status_module --with-http_ssl_module --prefix=/usr/local/nginx 执行后,可能会提示 ./configure: error: the HTTP rewrite module requires the PCRE library.这个错误,是缺少pcre 包,可用yum install pcre pcre-devlel来解决 3、make && make install 4、nginx安装成功后的安装目录为/usr/local/nginx 5.编辑配置文件nginx.conf

Nginx安装学习使用详细记录

前言: 选择Nginx的优点: Nginx 可以在大多数 Unix like OS 上编译运行,并有 Windows 移植版。 Nginx 的1.4.0稳定版已经于2013年4月24日发布,一般情况下,对于新建站点,建议使用最新稳定版作为生产版本,已有站点的升级急迫性不高。Nginx 的源代码使用 2-clause BSD-like license。 Nginx 是一个很强大的高性能Web和反向代理服务器,它具有很多非常优越的特性: 在高连接并发的情况下,Nginx是Apache服务器不错的替代品:Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应,感谢Nginx为我们选择了 epoll and kqueue作为开发模型。 1.1 执行安装 1.tar -xvf nginx-1.4. 2.tar.gz 2.cd nginx-1.4.2 3../configure --prefix=/usr/nginx --with-http_stub_status_module --with-debug --with -http_realip_module --with-http_ssl_module 4. 5. 6.[root@localhost nginx-1.4.2]# make install 7....... 8.test-d \'/usr/nginx/logs\'|| mkdir -p \'/usr/nginx/logs\' 9.test-d \'/usr/nginx/logs\'|| mkdir -p \'/usr/nginx/logs\' 10.test-d \'/usr/nginx/html\'|| cp -R html \'/usr/nginx\' 11.test-d \'/usr/nginx/logs\'|| mkdir -p \'/usr/nginx/logs\' 1.2 查看进程数 进程数是与top出来的cpu数量是一样的。在/usr/local/nginx/conf/nginx.conf配置文件里面的worker_processes参数。 worker_processes指明了nginx要开启的进程数,据官方说法,一般开一个就够了,多开几个,可以减少机器io带来的影响。据实践表明,nginx的这个参数在一般情况下开4个或8个就可以了,再往上开的话优化不太大。据另一种说法是,nginx开启太多的进程,会影响主进程调度,所以占用的cpu会增高。 1.[root@lb-net-2 ~]# ps -eaf|grep nginx 2.root 2221 1382 0 18:06 pts/0 00:00:00 grep nginx 3.root 16260 1 0 Jun18 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx 4.nobody 16261 16260 0 Jun18 ? 00:01:26 nginx: worker process 5.nobody 16262 16260 0 Jun18 ? 00:01:32 nginx: worker process 6.nobody 16263 16260 0 Jun18 ? 00:01:25 nginx: worker process 7.nobody 16264 16260 0 Jun18 ? 00:01:33 nginx: worker process 8.nobody 16265 16260 0 Jun18 ? 00:01:32 nginx: worker process 9.nobody 16266 16260 0 Jun18 ? 00:01:24 nginx: worker process 10.nobody 16267 16260 0 Jun18 ? 00:01:32 nginx: worker process 11.nobody 16268 16260 0 Jun18 ? 00:01:23 nginx: worker process

nginx中文解释

Nginx 常见应用技术指南[Nginx Tips] 第二版 作者:NetSeek https://www.doczj.com/doc/f013664680.html, (I T运维专家网|集群架构|性能调优) 欢迎转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明. 首发时间: 2008-11-25 更新时间:2009-1-14 目录 一、Nginx 基础知识 二、Nginx 安装及调试 三、Nginx Rewrite 四、Nginx Redirect 五、Nginx 目录自动加斜线: 六、Nginx Location 七、Nginx expires 八、Nginx 防盗链 九、Nginx 访问控制 十、Nginx日志处理 十一、Nginx Cache 十二、Nginx 负载均衡 十三、Nginx简单优化 十四、如何构建高性能的LEMP环境 十五、Nginx服务监控 十六、常见问题与错误处理. 十七、相关资源下载 【前言】: 编写此技术指南在于推广普及NGINX在国内的使用,更方便的帮助大家了解和掌握NGINX 的一些使用技巧。本指南很多技巧来自于网络和工作中或网络上朋友们问我的问题.在此对 网络上愿意分享的朋友们表示感谢和致意!欢迎大家和我一起丰富本技术指南提出更好的建 议!请朋友们关注: https://www.doczj.com/doc/f013664680.html, 技术分享社区! 互想学习共同进步! 一、Nginx 基础知识 1、简介 Nginx ("engine x") 是一个高性能的HTTP 和反向代理服务器,也是一个IMAP/POP3/SMTP 代理服 务器。Nginx 是由Igor Sysoev 为俄罗斯访问量第二的Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。尽管还是测试版,但是,Nginx 已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。 更多的请见官方wiki: https://www.doczj.com/doc/f013664680.html,/ 2、Nginx的优点 nginx做为HTTP服务器,有以下几项基本特性: 1) 处理静态文件,索引文件以及自动索引;打开文件描述符缓冲. 2) 无缓存的反向代理加速,简单的负载均衡和容错. 3) FastCGI,简单的负载均衡和容错. 4) 模块化的结构。包括gzipping, byte ranges, chunked responses, 以及SSI-filter等filter。 如果由FastCGI或其它代理服务器处理单页中存在的多个SSI,则这项处理可以并行运行,而不 需要相互等待。 5) 支持SSL 和 TLS SNI. Nginx专为性能优化而开发,性能是其最重要的考量, 实现上非常注重效率。它支持内核Poll模型, 能经受高负载的考验, 有报告表明能支持高达50,000 个并发连接数。 Nginx具有很高的稳定性。其它HTTP服务器,当遇到访问的峰值,或者有人恶意发起慢速连接时, 也很可能会导致服务器物理内存耗尽频繁交换,失去响应,只能重启服务器。例如当前apache一旦上到200个以上进程,web响应速度就明显非常缓慢了。而Nginx采取了分阶段资源分配技术,使得它的CPU与内存占用率非常低。nginx官方表示保持10,000个没有活动的连接,它只占2.5M内存,所以类似DOS这 样的攻击对nginx来说基本上是毫无用处的。就稳定性而言, nginx比lighthttpd更胜一筹。 Nginx支持热部署。它的启动特别容易, 并且几乎可以做到7*24不间断运行,即使运行数个月也不 需要重新启动。你还能够在不间断服务的情况下,对软件版本进行进行升级。 Nginx采用master-slave模型, 能够充分利用SMP的优势,且能够减少工作进程在磁盘I/O的阻 塞延迟。当采用select()/poll()调用时,还可以限制每个进程的连接数。 Nginx代码质量非常高,代码很规范,手法成熟,模块扩展也很容易。特别值得一提的是强大

相关主题
文本预览
相关文档 最新文档