nginx应用服务器

1.ngnix介绍

ngnix www服务软件 俄罗斯人开发 开源 性能很高 本身是一款静态WWW软件 静态小文件 支持高并发,同时占用的资源很少。

2.最大特点

(1)静态小文件(1M),支持高并发,同时占用的资源很少。3W并发,10个进程,内存150M.

(2)nginx服务端支持的平台:unix、linux、windows都可以.

(3)配置简单/灵活、轻量

(4)高并发(静态小文件),静态几万的并发

(5)占用资源少。2W并发 开10个线程服务,内存消耗几百M

(6)功能种类比较多,每一个功能都不是特别强

(7)支持epoll模型。使得nginx可以支持高并发!apache select模型

(8)nginx可以配合动态服务

(9)利用nginx可以对IP限速,可以限制连接数。

它所具备的其他WWW服务特性如下:

支持基于名字、端口以及IP的多虚拟机主机站点;

支持rewrite模块,支持URI重写及正则表达式匹配;

支持基于客户端IP地址和HTTP基本认证的访问控制;

支持http响应速率限制;

支持同一IP地址的并发连接或请求数限制。

3.Nginx的应用场合:

(1)提供静态服务(图片,视频服务),另一个lighttpd。并发:几万并发。

html,js,css,.flv,jpg,gif等。类似lighttpd。

(2)提供动态服务,nginx+fastcgi的方式运行php,jsp。动态并发500-1500.

apache+php,lighttpd+fcgi php

(3)提供反向代理(proxy)服务,或者称为负载均衡。日PV2000W以下,都可以直接用nginx做代理。

haproxy F5 A10

(4)缓存服务.类似Squid,varnish

4.nginx主要应用场景:

1.web服务器(首选)

静态文件,nginx首选

动态文件,配合fastcgi支持php

2.反向代理(负载均衡),1000-2000W PV,并发6000

3.缓存(不是很多)

注:nginx之所以超过apache的原因是nginx采用epoll模型,而apache采用的是select模型。

5.nginx虚拟主机:

一个server标签就是一个虚拟主机。

1.基于域名的虚拟主机.通过域名来区分虚拟主机==>应用:外部网站

2.基于端口的虚拟主机.通过端口来区分虚拟主机==>应用:公司内部网站,网站的后台

3.基于IP的虚拟主机。几乎不用。不支持ifxconfig别名,配置文件可以。

6.nginx的安装:

(1)HTTP rewrite module requires the PCRE library

PCRE == perl 兼容表达式

操作命令:

yum install pcre pcre-devel -y

rpm -qa pcre pcre-devel

(2)SSL module requires the OPEN SSL library

操作命令:

yum install openssl-devel -y

rpm -qa openssl-devel

(3)install nginx

tar -zxf ngnix-1.6.2

cd ngnix-1.6.2

. /configure --prefix=/application/ngnix-1.6.2 --user=ngnix --group=ngnix --with-http_ssl_module --with-http_stub_status_module

make && make install

cd ../

ln -s /application/nginx-1.6.2/ /application/nginx

(4)启动nginx

/application/nginx/sbin/nginx

(5)验证是否安装成功

netstat -lntup|grep 80

lsof -i :80

7.nginx配置详解

#user  nobody;

worker_processes  1;====> worker进程的数量

#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;====>每个worker进程支持的最大连接数

}

http {====>http区块开始

include      mime.types;====>nginx支持的媒体类型库文件包含

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 {====>第一个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;

#    }

#}

}

8.核心模块(Core Modules):

主模块(Main Module):

配置和服务器全局有关的一些参数,比如错误日志、进程、权限等

user

worker_processes

error_log

syntax: error_log file [debug|info|notice|warn|error|crit]

default: ${prefix}/logs/error.log

指定保存服务器(和 fastcgi)错误的日志文件。

在不同的部分,错误等级的缺省值会不一样,为:

1、在主要部分 – error

2、在 HTTP 部分 – crit

3、在server部分 – crit

Nginx中独有的而lighttpd却拒绝实现的特性是,每个虚拟主机可以有各自

分离的错误日志。在 server {} 中添加本指令即可。

log_not_found

lock_file

pid

include

syntax: include file / *

default: none

你可以包含任何配置文件,基于你想要达到的目的。

该指令还支持文件名通配符:

include vhosts/*.conf

注意, 0.6.7 以前,相对路径是相对于 configure 编

译时的 –prefix= 指令指定的目录,缺省为 /usr/local/nginx

如果编译时没有指定,则使用绝对路径。

0.6.7 以后,相对路径是相对于 nginx 配置文件 nginx.conf 所在的目录,

而不是 nginx 的 prefix 目录了。

事件模块(Events Module)

配置 IO 事件接口的相关参数,通常就是 worker_connections 这个参数。

use

syntax: use [kqueue|rtsig|epoll|/dev/poll|select|poll|eventport]

default:

通常 nginx 在编译时,会根据平台自动选择最优的 Events 接口。

除非特殊情况下,编译时指定了多个事件接口,则可以使用该指令来指定

特定的接口。

worker_connections

syntax: worker_connections number

default:

根据主模块中的 worker_processes 指令和该指令可计算最大的客户端连接数:

max_clients = worker_processes * worker_connections

不过,在做反向代理时, max_clients 变成了:

max_clients = worker_processes * worker_connections/4

因为,浏览器通常默认打开两个与服务器的连接, 而 nginx 使用同一个文件描述符池中的描述符来连接后端。

HTTP 模块

HTTP 核心模块(Http Core Module):

控制 Nginx HTTP 处理过程的核心特性。

alias

default_type

syntax: default_type MIME-type

default: default_type text/plain

context: http, server,location

指定在标准 MIME 映射中没有指定的文件的默认 MIME 类型。

error_page

syntax: error_page code [code…][=|=answer-code] uri

default: no

context: http, server, location, if in location

指定当错误出现时需要显示的 URI 。

而且,还可以改变应答的代码为另外一种代码,比如:

error_page 404 =200 /.empty.gif;

index

keepalive_timeout

syntax: keepalive_timeout [time]

default: keepalive_timeout 75

context: http, server, location

指定 keep_alive 连接的客户端的超时时间。

keepalive_requests

limit_except

limit_rate

listen

syntax: listen address:port [default [backlog=num|rcvbuf=size|sndbuf=size|accept_filter=filter|deferred|bind|ssl]

default: listen 80

context: server

指定最近的 server {…} 块的监听地址和端口。仅指定一个地址、一个端口、或一个地址的服务器名,都是可以的。

如果仅给定 IP 地址,则端口默认为 80

如果指令带有 default 参数,则最近的 server {…} 配置块,将成为 IP 地址:端口 对的默认服务器。

如果没有指令带有 default 参数,则缺省取 address:port 对出现的第一个 server 配置快。

location

syntax: location [=|~|~*|^~] /uri/ { … }

default: no

context: server

在特定 URI 上设置不同的配置。既能使用普通的字符串也和正则表达式来配置。

使用正则表达式,必须带一个前缀:

1、 ~* 表示大小写不敏感的。

2、 ~ 表示大小写敏感的。

确定哪一个 location 指令匹配某查询,首先检查普通字符串。普通字符串匹配该查询的开始

部分,而且是大小写敏感的 – 取匹配得最接近的一个。之后,将以在配置文件中出现的次序

来检查各个正则表达式。找到第一个匹配查询的正则表达式时停止。如果没有找到匹配的正则

表达式,则使用普通字符串搜索到的结果。

有两种方式修改这样的行为。一是使用 “=” 前缀,仅精确匹配查询。如果查询匹配,则搜索

停止,并立即处理请求。比如,如果对 “/” 的请求比较频繁,则使用 “location = / ” 将

加快处理这种请求的过程。

第二种是使用前缀 ^~ 。该前缀与普通字符串一起使用,来告诉 nginx ,如果提供的路径匹配

则不要去检查正则表达式。举个例子,”location ^~ /images/” 表示以 /images/ 开始的查询

则可停止搜索 – 所有的正则表达式指令都不会被检查。

总结一下,指令以下面的顺序来检查:

1、使用 = 前缀的指令,它精确匹配查询。如果找到,则停止查找。

2、所有剩余的常规字符串的指令。如果该匹配使用了 ^~ 前缀,则搜索停止。

3、正则表达式,以在配置文件中定义的次序。

4、如果第 3 点获得了一个匹配,则使用该结果。否则,使用从 第 2 点中匹配到的结果。

nginx 比对解码后的 URIs, 知道这点很重要。如果你希望匹配 “/images/%20/test”,则你需要

使用 “/images/ /test” 来确定 location 。

root

sendfile

syntax: sendfile [on|off]

default: sendfile off

context: http, server, location

启用或不启用 sendfile()

server

syntax: server {…}

default: no

context: http

虚拟主机的配置指令。

不区分 IP 和基于名称( Host 请求头) 的虚拟主机。

listen 指令用来描述所有监听的地址和端口。

server_name 指令来描述所有虚拟主机的名称。

server_name

syntax: server_name name […]

default: server_name hostname

context: server

该指令执行两种操作:

。 将 HTTP 请求中的 Host 请求头与配置文件中 server {…} 配置块比对,选择第一个匹配的。

这就是虚拟服务器的定义。用下面的顺序处理服务器名:

1、完整的,静态的名称;

2、以通配符开头的名称 – *.example.com

3、以通配符结尾的名称 – www.example.*

4、使用正则表达式的名称

如果没有匹配的,则使用以下顺序使用配置文件中的某个 [#server server { … }] 块:

1、server 块拥有标记为 default 的匹配 listen 指令。

2、拥有匹配的 listen 指令的第一个 server 块。

。如果 server_name_in_redirect 指令设置了,则设置用于 HTTP 转向中的服务器名。

server_tokens

types

HTTP 基本认证模块(Http Auth Basic Module):

使用该模块,可以基于 HTTP 基本认证,使用用户名和密码来保护站点或其中的某部分。

auth_basic

syntax: auth_basic [text|off]

default: auth_basic off

context: http, server, location, limit_except

该指令包含 HTTP 基本认证使用的测试名和密码。分配的参数用于认证 realm 。

“off” 值将覆盖掉从底层指令继承来的动作。

auth_basic_user_file

syntax: auth_basic_user_file the_file

default: no

context: http, server, location, limit_except

该指令设置用于认证 realm 的 htpasswd 文件名。需要注意的是,从 0.6.7 开始,

相对路径的文件路径将相对于配置文件 nginx.conf 所在的目录,而不是 prefix 目录。

密码必须使用 crypt 函数编码,你可以使用apache中的 htpasswd 程序构建。

HTTP 自动索引

该模块提供自动给出目录文件列表页面的功能。仅当 ngx_http_index_module 没有找到索引

文件时,请求才会到达该 ngx_http_autoindex_module 模块。

autoindex

syntax: autoindex [ on|off ]

default: autoindex off

context: http, server, location

启用或禁止自动目录文件列表功能。

autoindex_exact_size

syntax: autoindex_exact_size [ on|off ]

default: autoindex_exact_size on

context: http, server, location

定义在目录列表中如何显示文件的大小 — 精确的字节数或有取舍的更可读的

autoindex_localtime autoindex_localtime

syntax: autoindex_localtime [ on|off ]

default: autoindex_localtime off

context: http, server, location

是否显示文件时间为本地时间,缺省不显示(为 GMT 时间)。

索引文件(Index):

设置 URL 中未指定文件时的默认文件。可指定多个文件。

前面的文件没找到时,将依次查找后面的。

index

syntax: index file-path [file-path [ … ] ];

default: no

context: server, location

日志(Log):

设置 Nginx 如何为大量事件写入日志。

access_log

syntax: access_log path [format [buffer=size | off]]

default: access_log log/access.log combined

context: http, server, location

经典案例:

1.server块配置可如下配置

include www.conf;

include vhosts/*.conf;

2.ngnix 提供了查看状态的web界面 具体配置如下:

##status

server{

listen 80;

server_name www.xiaoxiaoshan.com;

location / {

stub_status on;

access_log off;

}

}

nginx状态界面    

第一个server表示nginx启动到现在共处理了--个连接。

第二个accepts表示nginx启动到现在共成功创建--次握手

请求丢失数 = (握手数-连接数)

第三个handled requests,表示总共处理了--次请求

reading:nginx读取到客户端的Header信息数

Writing:nginx返回个客户端的header信息数

Waiting:nginx已经处理完正在等候下一次请求指令的驻留连接。开启keep-alive的情况下,这个值等一active-(reading+writing)

3.nginx的错误信息:

nginx的错误信息是调试nginx服务的重要手段,属于核心功能模块,该参数名字为error_log,可以放在main区块中全局配置,也可以放在不同主机中单独记录虚拟主机的错误信息。

error_log的语法格式及参数语法说明如下:

errot_log  file level;

error_log的默认值为:

#defaule: error_log logs/error.log error;

可以放置的标签段为:

#context:main ,http,server,location

4.nginx的访问日志介绍

nginx软件会把每个用户访问网站的日志信息记录到指定的日志文件里,共网站提供分析用户浏览行为等。

nginx的访问日志主要有下面两个参数控制:

log_format 用来定义记录日志的格式

access_log 用来指定日志文件的路径及使用的何种日志格式记录日志。

nginx日志格式中默认的参数配置如下:

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

$server_name:虚拟主机名称。

$remote_addr:远程客户端的IP地址。

-:空白,用一个“-”占位符替代,历史原因导致还存在。

�$remote_user:远程客户端用户名称,用于记录浏览者进行身份验证时提供的名字,如登录百度的用户名scq2099yt,如果没有登录就是空白。

[$time_local]:访问的时间与时区�,比如18/Jul/2012:17:00:01 +0800,时间信息最后的"+0800"表示服务器所处时区位于UTC之后的8小时。

$request:请求的URI和HTTP协议,这是整个PV日志记录中最有用的信息,记录服务器收到一个什么样的请求

$status�:记录请求返回的http状态码,比如成功是200。

$uptream_status:upstream状态,比如成功是200.

$body_bytes_sent:�发送给客户端的文件主体内容的大小,比如899,可以将日志每条记录中的这个值累加起来以粗略估计服务器吞吐量。

$http_referer:记录从哪个页面链接访问过来的。

$http_user_agent:客户端浏览器信息

$http_x_forwarded_for:客户端的真实ip,通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址。

$ssl_protocol:SSL协议版本,比如TLSv1。

$ssl_cipher:交换数据中的算法,比如RC4-SHA。

$upstream_addr:upstream的地址,即真正提供服务的主机地址。

$request_time:整个请求的总时间。

$upstream_response_time:请求过程中,upstream的响应时间。

5.nginx访问日志轮询切割

#!/bin/sh

dateformat=`date +%Y%m%d`

basedir="/application/nginx"

nginxlogdir="$basedir/logs"

logname="access_www"

[-d $nginxlogdir ]&&cd $nginxlogdir || exit 1

[ -f ${logname}.log ]||exit 1

/bin/mv ${logname}.log ${dateformat}_${logname}.log

$basedir/sbin/nginx -s reload

将上述脚本做定时任务执行。

6.nginx rewrite规则

nginx rewrite 正则表达式匹配

大小写匹配

~ 为区分大小写匹配

~* 为不区分大小写匹配

!~和!~*分别为区分大小写不匹配及不区分大小写不匹配

文件及目录匹配

-f和!-f用来判断是否存在文件

-d和!-d用来判断是否存在目录

-e和!-e用来判断是否存在文件或目录

-x和!-x用来判断文件是否可执行

flag标记

last 相当于Apache里的[L]标记,表示完成rewrite

break 终止匹配, 不再匹配后面的规则。

redirect 返回302临时重定向 地址栏会显示跳转后的地址。

permanent 返回301永久重定向 地址栏会显示跳转后的地址。

logcation的几个使用实例:

1)location  / { }:匹配任何查询,因为所有请求都以 / 开头。但是正则表达式规则将被优先和查询匹配。

2)location =/ {}:仅仅匹配/

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

rewrite \.(gif|jpg)$ /logo.png;

}:location不区分大小写,匹配任何以gif,jpg,jpeg结尾的文件。

几个实例:

多目录转成参数

要求:abc.domian.com/sort/2 => abc.domian.com/index.php?act=sort&name=abc&id=2

规则配置:

if ($host ~* (.*)\.domain\.com) {

set $sub_name $1;

rewrite ^/sort\/(\d+)\/?$ /index.php?act=sort&cid=$sub_name&id=$1 last;

}

目录对换

要求:/123456/xxxx -> /xxxx?id=123456

规则配置:

rewrite ^/(\d+)/(.+)/ /$2?id=$1 last;

再来一个针对浏览器优化的自动rewrite,这里rewrite后的目录可以是存在的;

例如设定nginx在用户使用ie的使用重定向到/nginx-ie目录

规则如下:

if ($http_user_agent ~ MSIE) {

rewrite ^(.*)$ /nginx-ie/$1 break;

}

目录自动加“/” ,这个功能一般浏览器自动完成

if (-d $request_filename){

rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;

}

以下这些可能就跟广义的rewrite重写无关了

禁止htaccess

location ~/\.ht {

deny all;

}

禁止多个目录

location ~ ^/(cron|templates)/ {

deny all; break;

}

禁止以/data开头的文件,可以禁止/data/下多级目录下.log.txt等请求

location ~ ^/data {

deny all;

}

禁止单个文件

location ~ /data/sql/data.sql {

deny all;

}

给favicon.ico和robots.txt设置过期时间; 这里为favicon.ico为99天,robots.txt为7天并不记录404错误日志

location ~(favicon.ico) {

log_not_found off;

expires 99d;

break;

}

location ~(robots.txt) {

log_not_found off;

expires 7d;

break;

}

设定某个文件的浏览器缓存过期时间;这里为600秒,并不记录访问日志

location ^~ /html/scripts/loadhead_1.js {

access_log off;

expires 600;

break;

}

Nginx还可以自定义某一类型的文件的保质期时间,具体写法看下文的代码:

location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ {

if (-f $request_filename) {

expires    1h;

break;

}

}

//上段代码就将js|css|jpg|jpeg|gif|png|swf这类文件的保质期设置为一小时。

防盗链的设置:

防盗链:如果你的网站是个下载网站,下载步骤应该是先经过你的主页找到下载地址,才能下载,为了防止某些网友直接访问下载地址完全不通过主页下载,我们就可以使用防盗链的方式,具体代码如下:

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

valid_referers none blocked start.igrow.cn sta.igrow.cn;

if ($invalid_referer) {

rewrite ^/ http://$host/logo.png;

}

}

文件反盗链并设置过期时间--<盗链多次请求也会打开你的站点的图片啊,所以设置下缓存时间,不会每次盗链都请求并下载这张图片>

location ~* ^.+\.(jpg|jpeg|gif|png|swf|rar|zip|css|js)$ {

valid_referers none blocked *.jjonline.cn *.jjonline.com.cn *.lanwei.org *.jjonline.org localhost  42.121.107.189;

if ($invalid_referer) {

rewrite ^/ http://img.jjonline.cn/forbid.gif;

return 417;

break;

}

access_log off;

break;

}

说明:

这里的return 417 为自定义的http状态码,默认为403,方便通过nginx的log文件找出正确的盗链的请求地址

“rewrite ^/ http://img.jjonline.cn/forbid.gif;”显示一张防盗链图片

“access_log off;”不记录访问日志,减轻压力

“expires 3d”所有文件3天的浏览器缓存

只充许固定ip访问网站,并加上密码;这个对有权限认证的应用比较在行

location \ {

allow 22.27.164.25; #允许的ipd

deny all;

auth_basic “KEY”; #认证的一些设置

auth_basic_user_file htpasswd;

}

说明:location的应用也有各种变化,这里的写法就针对了根目录了。

文件和目录不存在的时重定向

if (!-e $request_filename) {

#proxy_pass http://127.0.0.1; #这里是跳转到代理ip,这个代理ip上有一个监听的web服务器

rewrite ^/ http://www.jjonline.cn/none.html;  #跳转到这个网页去

#return 404; #直接返回404码,然后会寻找root指定的404.html文件

}

域名跳转

server {

listen 80;

server_name jump.jjonline.cn ;#需要跳转的多级域名

index index.html index.htm index.php; #入口索引文件的名字

root /var/www/public_html/; #这个站点的根目录

rewrite ^/ http://www.jjonline.cn/;

#rewrite到这个地址,功能表现:在浏览器上输入jump.jjonline.cn并回车,不会有任何提示直接变成www.jjonline.cn

access_log off;

}

多域名转向

server {

listen 80;

server_name www.jjonline.cn www.jjonline.org;

index index.html index.htm index.php;

root /var/www/public_html/;

if ($host ~ “jjonline\.org”) {

rewrite ^(.*) http://www.jjonline.cn$1 permanent;

}

}

三级域名跳转

if ($http_host ~* “^(.*)\.i\.jjonline\.cn$”) {

rewrite ^(.*) http://demo.jjonline.cn$1;

break;

}

域名镜向

server {

listen 80;

server_name mirror.jjonline.cn;

index index.html index.htm index.php;

root /var/www/public_html;

rewrite ^/(.*) http://www.jjonline.cn/$1 last;

access_log off;

}

某个子目录作镜向,这里的示例是demo子目录

location ^~ /demo {

rewrite ^.+ http://demo.jjonline.cn/ last;

break;

}

以下在附带本博客的rewrite写法,emlog系统的rewrite

location ~ {

if (!-e $request_filename) {

rewrite ^/(.+)$ /index.php last;

}

}

7.fastcgi模块

配置文件如下:

server {

listen      80;

server_name  blog.xiaoxiaoshan.com··;

root  html/blog;

index  index.php index.html index.htm;

location / {

if (-f $request_filename/index.html){

rewrite (.*) $1/index.html break;

}

if (-f $request_filename/index.php){

rewrite (.*) $1/index.php;

}

if (!-f $request_filename){

rewrite (.*) /index.php;

}

}

location ~ .*\.(php|php5)?$

{

fastcgi_pass  127.0.0.1:9000;

fastcgi_index index.php;

include fastcgi.conf;

}

access_log  /app/logs/blog_access.log  main;

}

8.负载均衡

upstream backend {

server bacnkend1.example.com weight = 5;

server backend2.example.com:8080;

server unix:/tmp/backend3;

server backup1.example.com:8080 backup;

server backup2.example.com:8080 backup;

ip_hash;

}

server {

location / {

proxy_pass http://backend;

}

}

9.Http_proxy模块

location / {

    proxy_pass http://localhost:8000;

    proxy_set_header Host $host;

    proxy_set_header X-Real-IP $remote_addr;

}

推荐阅读更多精彩内容