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