Nginx参数说明及优化

Nginx Rewrite

1.Nginx Rewrite 基本标记(flags)复制内容到剪贴板代码:last – 基本上都用这个Flag。

break – 中止Rewirte,不在继续匹配

redirect – 返回临时重定向的HTTP状态302

permanent – 返回永久重定向的HTTP状态301

2. 正则表达式匹配,其中:代码:

CODE:

* ~   为区分大小写匹配

* ~* 为不区分大小写匹配

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

3. 文件及目录匹配,其中:代码:

CODE:

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

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

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

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

4.Nginx 的一些可用的全局变量,可用做条件判断:

代码:

CODE:

$args

$content_length

$content_type

$document_root

$document_uri

$host

$http_user_agent

$http_cookie

$limit_rate

$request_body_file

$request_method

$remote_addr

$remote_port

$remote_user

$request_filename

$request_uri

$query_string

$scheme

$server_protocol

$server_addr

$server_name

$server_port

$uri

四.Nginx Redirect

将所有linuxtone.org与abc.linuxtone.org域名全部自跳转到http://www.linuxtone.org代码:

CODE:

server

{

listen    80;

server_name   linuxtone.org abc.linuxtone.org;

index index.html index.php;

root   /data/www/wwwroot;

if ($http_host !~ “^www\.linxtone\.org$”) {

rewrite   ^(.*) [url]http://www.linuxtone.org[/url]$1 redirect;

}

……………………

}

五.Nginx 目录自动加斜线:代码:

CODE:

if (-d $request_filename){

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

}

六.Nginx 防盗链代码:

CODE:

#Preventing hot linking of images and other file types

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

valid_referers none blocked server_names *.linuxtone.org http://localhost baidu.com;

if ($invalid_referer) {

rewrite ^/ [img]http://www.linuxtone.org/images/default/logo.gif[/img];

# return 403;

}

}

七.Nginx expires

1.        根据文件类型expires

代码:

CODE:

# Add expires header for static content

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

if (-f $request_filename) {

root /data/www/wwwroot/bbs;

expires    1d;

break;

}

}

2.根据判断某个目录

代码:

CODE:

# serve static files

location ~ ^/(images|javascript|js|css|flash|media|static)/   {

root /data/www/wwwroot/down;

expires 30d;

}

八.Nginx 访问控制

1.Nginx 身份证验证

代码:

CODE:

#cd /usr/local/nginx/conf

#mkdir htpasswd

/usr/local/apache2/bin/htpasswd -c /usr/local/nginx/conf/htpasswd/tongji linuxtone #添加用户名为linuxtone

New password: (此处输入你的密码)

Re-type new password: (再次输入你的密码)

Adding password for user

[url]http://count.linuxtone.org/tongji/data/index.html[/url](目录存在/data/www/wwwroot/tongji/data/目录下)

将下段配置放到虚拟主机目录,当访问[url]http://count.linuxtone/tongji/[/url]即提示要密验证:

location ~ ^/(tongji)/   {

root /data/www/wwwroot/count;

auth_basic              “LT-COUNT-TongJi”;

auth_basic_user_file   /usr/local/nginx/conf/htpasswd/tongji;

}

2.Nginx 禁止访问某类型的文件.

如,Nginx下禁止访问*.txt文件,配置方法如下.代码:

CODE:

location ~* \.(txt|doc)$ {

if (-f $request_filename) {

root /data/www/wwwroot/linuxtone/test;

break;

}

}

方法2:代码:

CODE:

location ~* \.(txt|doc)${

root /data/www/wwwroot/linuxtone/test;

deny all;

}

禁止访问某个目录代码:

CODE:

location ~ ^/(WEB-INF)/ {

deny all;

}

3.使用ngx_http_access_module限制ip访问

代码:

CODE:

location / {

deny 192.168.1.1;

allow 192.168.1.0/24;

allow 10.1.1.0/16;

deny all;

}

详细参见wiki: http://wiki.codemongers.com/NginxHttpAccessModule#allow

4.Nginx 下载限制并发和速率

代码:

CODE:

limit_zone one   $binary_remote_addr   10m;

server

{

listen    80;

server_name   down.linuxotne.org;

index index.html index.htm index.php;

root /data/www/wwwroot/down;

#Zone limit

location / {

limit_conn one   1;

limit_rate   20k;

}

……….

}

5.        Nginx 实现Apache一样目录列表

代码:

CODE:

location   /   {

autoindex   on;

}

九.Nginx Location

1.基本语法:[和上面rewrite正则匹配语法基本一致]代码:

CODE:

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

* ~   为区分大小写匹配

* ~* 为不区分大小写匹配

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

示例1:代码:

CODE:

location = / {

# matches the query / only.

# 只匹配 / 查询。

}

匹配任何查询,因为所有请求都已 / 开头。但是正则表达式规则和长的块规则将被优先和查询匹配

示例2:代码:

CODE:

location ^~ /images/ {

# matches any query beginning with /images/ and halts searching,

# so regular expressions will not be checked.# 匹配任何已 /images/ 开头的任何查询并且停止搜索。任何正则表达式将不会被测试。

示例3:代码:

CODE:

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

# matches any request ending in gif, jpg, or jpeg. However, all

# requests to the /images/ directory will be handled by

}# 匹配任何已 gif、jpg 或 jpeg 结尾的请求。

十.Nginx 日志处理

1.Nginx 日志切割代码:

CODE:

#contab -e

59 23 * * * /usr/local/sbin/logcron.sh /dev/null 2>&1

[[email protected] ~]# cat /usr/local/sbin/logcron.sh代码:

CODE:

#!/bin/bash

log_dir=”/data/logs”

time=date +%Y%m%d

/bin/mv   ${log_dir}/access_linuxtone.org.log ${log_dir}/access_count.linuxtone.org.$time.log

kill -USR1 cat   /var/run/nginx.pid

更多的日志分析与处理就关注(同时欢迎你参加讨论):http://bbs.linuxtone.org/forum-8-1.html

2.Nginx 如何不记录部分日志

日志太多,每天好几个G,少记录一些,下面的配置写到server{}段中就可以了代码:

CODE:

location ~ .*\.(js|jpg|JPG|jpeg|JPEG|css|bmp|gif|GIF)$

{

access_log off;

}

十一.Nginx Cache服务配置

如果需要将文件缓存到本地,则需要增加如下几个子参数:代码:

CODE:

proxy_store on;

proxy_store_access user:rw group:rw all:rw;

proxy_temp_path 缓存目录;其中,

proxy_store on用来启用缓存到本地的功能,

proxy_temp_path用来指定缓存在哪个目录下,如:proxy_temp_path html;

在经过上一步配置之后,虽然文件被缓存到了本地磁盘上,但每次请求仍会向远端拉取文件,为了避免去远端拉取文件,必须修改proxy_pass:代码:

CODE:

if ( !-e $request_filename) {

proxy_pass   http://mysvr;

}

即改成有条件地去执行proxy_pass,这个条件就是当请求的文件在本地的proxy_temp_path指定的目录下不存在时,再向后端拉取。

十二.Nginx 负载均衡

1. Nginx 基础知识

nginx的upstream目前支持4种方式的分配

1)、轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

2)、weight

指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

2)、ip_hash

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

3)、fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

4)、url_hash(第三方)

3.Nginx 负载均衡

实例1代码:

CODE:

upstream bbs.linuxtone.org {#定义负载均衡设备的Ip及设备状态

server 127.0.0.1:9090 down;

server 127.0.0.1:8080 weight=2;

server 127.0.0.1:6060;

server 127.0.0.1:7070 backup;

}

在需要使用负载均衡的server中增加代码:

CODE:

proxy_pass [url]http://bbs.linuxtone.org/[/url];

每个设备的状态设置为:代码:

CODE:

1.down 表示单前的server暂时不参与负载

2.weight 默认为1.weight越大,负载的权重就越大。

3.max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误

4.fail_timeout:max_fails次失败后,暂停的时间。

5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。nginx支持同时设置多组的负载均衡,用来给不用的server来使用。

client_body_in_file_only 设置为On 可以讲client post过来的数据记录到文件中用来做debug

client_body_temp_path 设置记录文件的目录 可以设置最多3层目录

location 对URL进行匹配.可以进行重定向或者进行新的代理 负载均衡

4.Nginx 负载均衡实例 2

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效,也可以用作提高Squid缓存命中率.

简单的负载均等实例:

#vi nginx.conf   //nginx主配置文件核心配置代码:

CODE:

……….

#loadblance my.linuxtone.org

upstream   my.linuxtone.org   {

ip_hash;

server 127.0.0.1:8080;

server 192.168.169.136:8080;

server 219.101.75.138:8080;

server 192.168.169.117;

server 192.168.169.118;

server 192.168.169.119;

}

…………..

include       vhosts/linuxtone_lb.conf;

………

#vi proxy.conf

proxy_redirect off;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

client_max_body_size 50m;

client_body_buffer_size 256k;

proxy_connect_timeout 30;

proxy_send_timeout 30;

proxy_read_timeout 60;

proxy_buffer_size 4k;

proxy_buffers 4 32k;

proxy_busy_buffers_size 64k;

proxy_temp_file_write_size 64k;

proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;

proxy_max_temp_file_size 128m;

proxy_store on;

proxy_store_access user:rw   group:rw   all:r;

#nginx cache

client_body_temp_path   /data/nginx_cache/client_body 1 2;

proxy_temp_path /data/nginx_cache/proxy_temp 1 2;#vi linuxtone_lb.conf

代码:

CODE:

server

{

listen   80;

server_name my.linuxtone.org;

index index.php;

root /data/www/wwwroot/mylinuxtone;

if (-f $request_filename) {

break;

}

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

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

}

error_page 403 [url]http://my.linuxtone.org/member.php?m=user&a=login[/url];

location / {

if ( !-e $request_filename) {

proxy_pass [url]http://my.linuxtone.org[/url];

break;

}

include /usr/local/nginx/conf/proxy.conf;

}

}

十三.Nginx 优化

1.减小nginx编译后的文件大小 (Reduce file size of nginx)

默认的nginx编译选项里居然是用debug模式(-g)的(debug模式会插入很多跟踪和ASSERT之类),编译以后一个nginx有好几兆。去掉nginx的debug模式编译,编译以后只有几百K

在 auto/cc/gcc,最后几行有:

# debug

CFLAGS=”$CFLAGS -g”

注释掉或删掉这几行,重新编译即可。

2.修改Nginx的header伪装服务器

代码:

CODE:

# cd nginx-0.6.31

# vi src/core/nginx.h

#ifndef _NGINX_H_INCLUDED_

#define _NGINX_H_INCLUDED_

#define NGINX_VERSION    “1.3”

#define NGINX_VER       “LTWS/” NGINX_VERSION

#define NGINX_VAR       “NGINX”

#define NGX_OLDPID_EXT     “.oldbin”

#endif /* _NGINX_H_INCLUDED_ */

# curl -I my.linuxtone.org

HTTP/1.1 200 OK

Server: LTWS/1.3

Date: Mon, 24 Nov 2008 02:42:51 GMT

Content-Type: text/html; charset=gbk

Transfer-Encoding: chunked

Connection: keep-alive

时间: 2024-12-28 15:06:33

Nginx参数说明及优化的相关文章

Nginx Web服务优化

实验环境: 虚拟机 CentOS 6.8 Nginx基本安全优化 1.调整参数隐藏Nginx软件版本号信息 http { include  mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server_tokens off;   为关闭状态,不显示具体版本号 include extra/www.conf; include extra/bbs.conf; include ex

linux下nginx的安全优化

上节我们说了Apache的Web服务安全与优化.分别说了进程优化,版本号的隐藏,会话连接的时间,DNS查询.我们只要掌握这些优化点就够了,大家不要一味追求求精,什么都有个度的,你弄的太过了,相应他别的方面也就会不行了,所以我们优化的标准是找一个折衷点,是最好的!接下来我们说下nginx的web服务的安全优化. Nginx的安全优化原理跟Apache大致一样的,有一些细微的差别,和更改参数的地方不同而已! 在说优化nginx之前我们先了解下他的结构: Nginx由内核和模块组成,其中,内核的设计非

nginx高并发优化

nginx 高并发优化 一.关闭系统中不需要的服务 二.优化磁盘写操作 mount -o remount defaults,noatime,nodiratime partion mount_partion fstab 将partion mount_partion defaults 0 0 修改为partion mount_partion defaults,noatime,nodiratime 0 0 即修改为写入磁盘不修改访问时间 三.优化资源限制 ulimit -n 和ulimit -u 即o

编译安装nginx及简单优化配置

一.背景 使用源码包安装lnmp架构及简单的优化配置 二.实验环境 rhel6.5 三.安装过程 1.nginx(提前装好gcc等编译器) (1) 下载源码包  http://nginx.org/ (2) tar -zxf nginx-1.8.1.tar.gz (3) cd nginx-1.8.1 vim auto/cc/gcc 修改第179行 (将本行注释,意为取消debug模式,) (4) ./configure --prefix=/usr/local/lnmp/nginx \ --with

分享:Nginx配置性能优化

Nginx配置性能优化 分类: Nginx/Apache2014-04-03 22:23 3957人阅读 评论(0) 收藏 举报 nginxgzipworkerweb服务epoll 大多数的Nginx安装指南告诉你如下基础知识--通过apt-get安装,修改这里或那里的几行配置,好了,你已经有了一个Web服务器了.而且,在大多数情况下,一个常规安装的nginx对你的网站来说已经能很好地工作了.然而,如果你真的想挤压出Nginx的性能,你必须更深入一些.在本指南中,我将解释Nginx的那些设置可以

Nginx并发访问优化

Nginx反向代理并发能力的强弱,直接影响到系统的稳定性.安装Nginx过程,默认配置并不涉及到过多的并发参数,作为产品运行,不得不考虑这些因素.Nginx作为产品运行,官方建议部署到Linux64位系统,基于该建议,本文中从系统线之上考虑Nginx的并发优化. 1.打开Linux系统epoll支持 epoll支持,能够大大提高系统网络IO的并发数. 2.Linux文件句柄数限制 Nginx代理过程,将业务服务器请求数据缓存到本地文件,再将文件数据转发给请求客户端.高并发的客户端请求,必然要求服

Nginx web服务优化 (一)

1.Nginx基本安全优化 a.更改配置文件参数隐藏版本 编辑nginx.conf配置文件增加参数,实现隐藏Nginx版本号的方式如下.在nginx配置文件nginx.conf中的http标签段内加入 "server_tokens off;"参数,如下: http{ -- server_tokens off; -- } 此参数放置在http标签内,作用是控制http response header内的web服务版本信息的显示,以及错误信息中web服务版本信息的显示. server_to

nginx 服务器并发优化

apache 提供的 ab 可以对服务器进行压力测试, 安装 ab:   apt-get install apache2-utils 安装完后,ab 在目录  /usr/bin/ 下的. 执行: ab -c 并发数 -n 请求数 请求的URL    如: ab -c 2000 -n 50000 http://192.168.137.47/    表示对 http://192.168.137.47/ 进行50000次请求,并发数为 2000 我运行的机器不是在 192.168.137.47 上,运

web网站集群之企业级Nginx Web服务优化详解

1. 隐藏nginx版本信息优化(安全优化) 官方参考链接:http://nginx.org/en/docs/http/ngx_http_core_module.html#server_tokens Syntax:  server_tokens on | off | build | string; Default: server_tokens on;(默认显示nginx服务版本) Context: http, server, location 实践配置: server { listen