搜档网
当前位置:搜档网 › nginx中文解释

nginx中文解释

nginx中文解释
nginx中文解释

Nginx 常见应用技术指南[Nginx Tips] 第二版

作者:NetSeek https://www.sodocs.net/doc/6618243060.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.sodocs.net/doc/6618243060.html, 技术分享社区! 互想学习共同进步!

一、Nginx 基础知识

1、简介

Nginx ("engine x") 是一个高性能的HTTP 和反向代理服务器,也是一个IMAP/POP3/SMTP 代理服

务器。Nginx 是由Igor Sysoev 为俄罗斯访问量第二的Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。尽管还是测试版,但是,Nginx 已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。

更多的请见官方wiki: https://www.sodocs.net/doc/6618243060.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代码质量非常高,代码很规范,手法成熟,模块扩展也很容易。特别值得一提的是强大

的Upstream与Filter链。Upstream为诸如reverse proxy, 与其他服务器通信模块的编写奠定了很好的基础。而Filter链最酷的部分就是各个filter不必等待前一个filter执行完毕。它可以把前一个filter

的输出做为当前filter的输入,这有点像Unix的管线。这意味着,一个模块可以开始压缩从后端服务器发送过来的请求,且可以在模块接收完后端服务器的整个请求之前把压缩流转向客户端。

Nginx采用了一些os提供的最新特性如对sendfile (Linux 2.2+),accept-filter (FreeBSD

4.1+),TCP_DEFER_ACCEPT (Linux 2.4+) 的支持,从而大大提高了性能

二、Nginx 安装及调试

1、Pcre 安装

./configure

make && make install

cd ../

2. nginx 编译安装

/configure --user=www --group=www --prefix=/usr/local/nginx/ --with-http_stub_status_module --with-openssl=/usr/local/openssl

make && make install

更详细的模块定制与安装请参照官方wiki.

3、Nginx 配置文件测试:

# /usr/local/nginx/sbin/nginx -t //Debug 配置文件的关键命令需要重点撑握.

2008/12/16 09:08:35 [info] 28412#0: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

2008/12/16 09:08:35 [info] 28412#0: the configuration file /usr/local/nginx/conf/nginx.conf was tested successfully

3、Nginx 启动:

# /usr/local/nginx/sbin/nginx

4、Nginx 配置文件修改重新加载:

# kill -HUP `cat /usr/local/nginx/logs/nginx.pid `

三、Nginx Rewrite

1. Nginx R ewrite 基本标记(flags)

last - 基本上都用这个Flag。

※相当于Apache里的[L]标记,表示完成rewrite,不再匹配后面的规则

break - 中止Rewirte,不再继续匹配

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

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

※原有的url支持正则重写的url不支持正则

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

~ 为区分大小写匹配

~* 为不区分大小写匹配

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

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

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

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

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

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

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

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

$request_filename

$request_uri

$query_string

$scheme

$server_protocol

$server_addr

$server_name

$server_port

$uri

四、Nginx Redirect

将所有https://www.sodocs.net/doc/6618243060.html,与https://www.sodocs.net/doc/6618243060.html,域名全部自跳转到https://www.sodocs.net/doc/6618243060.html,

server {

listen 80;

server_name https://www.sodocs.net/doc/6618243060.html, https://www.sodocs.net/doc/6618243060.html,;

index index.html index.php;

root /data/www/wwwroot;

if ($host !~ "^www\.linxtone\.org$") {

rewrite ^(.*) https://www.sodocs.net/doc/6618243060.html,$1 redirect;

}

.....................

}

五、Nginx 目录自动加斜线:

if (-d $request_filename){

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

}

六、Nginx Location

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

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

~ 为区分大小写匹配

~* 为不区分大小写匹配

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

示例1:

location = / {

# matches the query / only.

# 只匹配/ 查询。

}

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

location ^~ /images/ {

# matches any query beginning wi t h /images/ and halts searching,

# so regular expressions will not be checked.

# 匹配任何以/images/ 开头的任何查询并且停止搜索。任何正则表达式将不会被测试。

}

示例3:

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 expires

1.根据文件类型判断,添加expires

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

}

}

2、根据某个目录判断,添加expires

# serve static files

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

root /data/www/wwwroot/down;

expires 30d;

}

八、Nginx 防盗链

1. 针对不同的文件类型

#Preventing hot linking of images and other file types

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

valid_referers none blocked server_names *https://www.sodocs.net/doc/6618243060.html, https://www.sodocs.net/doc/6618243060.html, http://localhost https://www.sodocs.net/doc/6618243060.html,;

if ($invalid_referer) {

rewrite ^/ https://www.sodocs.net/doc/6618243060.html,/images/default/logo.gif;

# return 403;

}

}

2. 针对不同的目录

location /img/ {

root /data/www/wwwroot/bbs/img/;

valid_referers none blocked server_names *https://www.sodocs.net/doc/6618243060.html, http://localhost https://www.sodocs.net/doc/6618243060.html,;

if ($invalid_referer) {

rewrite ^/ https://www.sodocs.net/doc/6618243060.html,/images/default/logo.gif;

#return 403;

}

}

3. 同实现防盗链和expires的方法

#Preventing hot linking of images and other file types

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

valid_referers none blocked server_names *https://www.sodocs.net/doc/6618243060.html, https://www.sodocs.net/doc/6618243060.html, http://localhost ;

if ($invalid_referer) {

rewrite ^/ https://www.sodocs.net/doc/6618243060.html,/images/default/logo.gif;

}

access_log off;

root /data/www/wwwroot/bbs;

expires 1d;

break;

}

九、Nginx 访问控制

1. Nginx 身份证验证

#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

https://www.sodocs.net/doc/6618243060.html,/tongji/data/index.html(目录存在/data/www/wwwroot/tongji/data/目录

下)

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

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文件,配置方法如下.

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

if (-f $request_filename) {

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

#rewrite …..可以重定向到某个URL

break;

}

}

方法2:

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

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

deny all;

}

实例:

禁止访问某个目录

location ~ ^/(WEB-INF)/ {

deny all;

}

3. 使用ngx_http_access_module限制ip访问

location / {

deny 192.168.1.1;

allow 192.168.1.0/24;

allow 10.1.1.0/16;

deny all;

}

详细参见wiki: https://www.sodocs.net/doc/6618243060.html,/NginxHttpAccessModule#allow 4. Nginx 下载限制并发和速率

limit_zone linuxtone $binary_remote_addr 10m;

server {

listen 80;

server_name https://www.sodocs.net/doc/6618243060.html,;

index index.html index.htm index.php;

root /data/www/wwwroot/down;

#Zone limit

location / {

limit_conn linuxtone 1;

limit_rate 20k;

}

..........

}

只允许客房端一个线程,每个线程20k.

【注】limit_zone linuxtone $binary_remote_addr 10m; 这个可以定义在主的5. Nginx 实现Apache一样目录列表

location / {

autoindex on;

}

6. 上文件大小限制

主配置文件里加入如下,具体大小根据你自己的业务做调整。

client_max_body_size 10m;

十、Nginx 日志处理

1.Nginx 日志切割

#contab -e

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

# cat /usr/local/sbin/logcron.sh

#!/bin/bash

log_dir="/data/logs"

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

/bin/mv ${log_dir}/access_https://www.sodocs.net/doc/6618243060.html,.log ${log_dir}/access_https://www.sodocs.net/doc/6618243060.html,.$time.log

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

更多的日志分析与处理就关注(同时欢迎你参加讨论):https://www.sodocs.net/doc/6618243060.html,/forum-8-1.html

2.利用AWSTATS分析NGINX日志

设置好Nginx日志格式,仍后利用awstats进行分析.

请参考: https://www.sodocs.net/doc/6618243060.html,/thread-56-1-1.html

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

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

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

access_log off;

}

十一、Nginx Cache服务配置

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

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:

if ( !-e $request_filename) {

proxy_pass http://mysvr;

}

即改成有条件地去执行proxy_pass,这个条件就是当请求的文件在本地的

proxy_temp_path指定的目录下不存在时,再向后端拉取。

更多更高级的应用可以研究ncache,官方网站: https://www.sodocs.net/doc/6618243060.html,/p/ncache/

详细安装请参照https://www.sodocs.net/doc/6618243060.html, 应用加速版ncache相关的贴子.

十二、Nginx 负载均衡

1. Nginx 负载均衡基础知识

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

1)、轮询(默认)

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

2)、weight

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

2)、ip_hash

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

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

4)、url_hash(第三方)

2. Nginx 负载均衡实例1

upstream https://www.sodocs.net/doc/6618243060.html, { #定义负载均衡设备的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中增加

proxy_pass https://www.sodocs.net/doc/6618243060.html,/;

每个设备的状态设置为:

a) down 表示单前的server暂时不参与负载

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

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

d) fail_timeout:max_fails次失败后,暂停的时间。

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

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

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

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

3. Nginx 负载均衡实例2

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓

存时比较有效,也可以用作提高Squid缓存命中率.

简单的负载均等实例:

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

.........

#loadblance https://www.sodocs.net/doc/6618243060.html,

upstream https://www.sodocs.net/doc/6618243060.html, {

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

server {

listen 80;

server_name https://www.sodocs.net/doc/6618243060.html,;

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 https://www.sodocs.net/doc/6618243060.html,/member.php?m=user&a=login;

location / {

if ( !-e $request_filename) {

proxy_pass https://www.sodocs.net/doc/6618243060.html,;

break;

}

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

}

}

十三、Nginx简单优化

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

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

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

# debug

CFLAGS=”$CFLAGS -g”

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

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

1) 修改nginx.h

#vi nginx-0.7.30/src/core/nginx.h

#define NGINX_VERSION "1.8"

#define NGINX_VER "LTWS/" NGINX_VERSION

#define NGINX_VAR "NGINX"

#define NGX_OLDPID_EXT ".oldbin"

2) 修改nginx_http_header_filter_module

#vi nginx-0.7.30/src/http/ngx_http_header_filter_module.c

将如下

static char ngx_http_server_string[] = "Server: nginx" CRLF;

修改为

static char ngx_http_server_string[] = "Server: LTWS" CRLF;

a) 修改nginx_http_header_filter_module

#vi nginx-0.7.30/src/http/ngx_http_special_response.c

将如下:

static u_char ngx_http_error_full_tail[] =

"


" NGINX_VER "
" CRLF

"" CRLF

"" CRLF

;

static u_char ngx_http_error_tail[] =

"


nginx
" CRLF

"" CRLF

"" CRLF

;

修改为:

static u_char ngx_http_error_full_tail[] =

"

"NGINX_VER"
" CRLF

"


https://www.sodocs.net/doc/6618243060.html,
" CRLF

"" CRLF

"" CRLF

;

static u_char ngx_http_error_tail[] =

"


LTWS
" CRLF

"" CRLF

"" CRLF

;

修改后重新编译一下环境,

404错误的时候显示效果图(如果没有指定错误页的话):

利用curl命令查看服务器header

3. 为特定的CPU指定CPU类型编译优化.

默认nginx使用的GCC编译参数是-O

需要更加优化可以使用以下两个参数

--with-cc-opt='-O3' \

--with-cpu-opt=opteron \

使得编译针对特定CPU以及增加GCC的优化.

此方法仅对性能有所改善并不会有很大的性能提升,供朋友们参考.

CPUD类型确定:

# cat /proc/cpuinfo | grep "model name"

编译优化参数参考:https://www.sodocs.net/doc/6618243060.html,/wiki/Safe_Cflags

4. Tcmalloc优化Nginx 性能

# wget https://www.sodocs.net/doc/6618243060.html,/releases/libunwind/libunwind-0.99-alpha.tar.gz

# tar zxvf libunwind-0.99-alpha.tar.gz

# cd libunwind-0.99-alpha/

# CFLAGS=-fPIC ./configure

# make CFLAGS=-fPIC

# make CFLAGS=-fPIC install

# wget https://www.sodocs.net/doc/6618243060.html,/files/google-perftools-0.98.tar.gz

# tar zxvf google-perftools-0.98.tar.gz

# cd google-perftools-0.98/

# ./configure

# make && make install

# echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf

# ldconfig

# lsof -n | grep tcmalloc

编译nginx 加载google_perftools_module:

./configure --with-google_perftools_module

在主配置文件加入nginx.conf 添加:

google_perftools_profiles /path/to/profile;

5. 内核参数优化

# vi /etc/sysctl.conf

#在末尾增加以下内容:

net.ipv4.tcp_fin_timeout = 30

net.ipv4.tcp_keepalive_time = 300

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.ip_local_port_range = 5000 65000

#使配置立即生效

/sbin/sysctl -p

十四、如何构建高性的LEMP

请参见: https://www.sodocs.net/doc/6618243060.html,/lemp/lemp.pdf

1、提供完整的配置脚本下载:https://www.sodocs.net/doc/6618243060.html,/lemp/scripts.tar.gz

2、提供NGINX常见配置范例含(虚拟主机,防盗链,Rewrite,访问控制,负载均衡Discuz相关程序静态化及等等),你只要稍稍修改即可线上应用。

3、将原版的xcache替换成EA,并提供相关简单调优脚本及配置文件。

更多的及更新资料请关注: https://www.sodocs.net/doc/6618243060.html,

十五、Nginx监控

1、RRDTOOL+Perl脚本画图监控

先安装好rrdtool ,关于rrdtool本文不作介绍,具体安装请参照linuxtone监控版块.

#cd /usr/local/sbnin

#wget https://www.sodocs.net/doc/6618243060.html,/files/mrtg/rrd_nginx.pl.txt

#mv rrd_nginx.pl.txt rrd_nginx.pl

#chmod a+x rrd_nginx.pl

#vi rrd_nginx.pl //配置脚本文件设置好路径

#!/usr/bin/perl

use RRDs;

use LWP::UserAgent;

# define location of rrdtool databases

my $rrd = '/data/www/wwwroot/nginx/rrd';

# define location of images

my $img = '/data/www/wwwroot/nginx/html';

# define your nginx stats URL

my $URL = "http:// 219.32.205.13/nginx_status";

…………

【注】根据自己具体的状况修改相应的路径.

#crontab –e //加入如下

* * * * * /usr/local/sbin/rrd_nginx.pl

重启crond后,通过配置nginx虚拟主机指到/data/www/wwwroot/nginx/html目录,通过crond 自动执行perl脚本会生成很多图片.

http://xxx/connections-day.png即可看到服务器状态图。

2、官方Nginx-rrd 监控服务(多虚拟主机)(推荐)

网址:http://www.nginx.eu/nginx-rrd.html

此解决方案其实是基于上述监控方案的一个改进和增强,同样先安装好rrdtool这个画图工

具和相应的perl模块再做如下操作:

# yum install perl-HTML*

先建立好生成的库存和图片存放录

#mkdir -p /data/www/wwwroot/nginx/{rrd,html}

#cd /usr/local/sbin

#wget http://www.nginx.eu/nginx-rrd/nginx-rrd-0.1.4.tgz

#tar zxvf nginx-rrd-0.1.4.tgz

#cd nginx-rrd-0.1.4

#cd etc/

#cp nginx-rrd.conf /etc

#cd etc/cron.d

#cp nginx-rrd.cron /etc/cron.d

#cd /usr/local/src/nginx-rrd-0.1.4/html

# cp index.php /data/www/wwwroot/nginx/html/

#cd /usr/local/src/nginx-rrd-0.1.4/usr/sbin

#cp * /usr/sbin/

#vi /etc/nginx-rrd.conf

#####################################################

#

# dir where rrd databases are stored

RRD_DIR="/data/www/wwwroot/nginx/rrd";

# dir where png images are presented

WWW_DIR="/data/www/wwwroot/nginx/html";

# process nice level

NICE_LEVEL="-19";

# bin dir

BIN_DIR="/usr/sbin";

# servers to test

# server_utl;server_name

SERVERS_URL="http://219.32.205.13/nginx_status;219.32.205.13

https://www.sodocs.net/doc/6618243060.html,/nginx_status;https://www.sodocs.net/doc/6618243060.html,"" //根据你的具体情况做调整. SEVERS_URL 格式http://domain1/nginx_status;domain1 http://domain2/nginx_status;domain2 这种格式监控多虚拟主机连接状态:

重点启crond服务,仍后通过http://219.32.205.13/nginx/html/ 即可访问。配置过程很简单!

3、CACTI模板监控Nginx

利用Nginx_status状态来画图实现CACTI监控

nginx编译时允许http_stub_status_module

# vi /usr/local/nginx/conf/nginx.conf

location /nginx_status {

stub_status on;

access_log off;

allow 192.168.1.37;

deny all;

}

# kill -HUP `cat /usr/local/nginx/logs/nginx.pid`

# wget https://www.sodocs.net/doc/6618243060.html,/download.php?id=12676

# tar xvfz cacti-nginx.tar.gz

# cp cacti-nginx/get_nginx_socket_status.pl /data/cacti/scripts/

# cp cacti-nginx/get_nginx_clients_status.pl /data/cacti/scripts/

# chmod 755 /data/cacti/scripts/get_nginx*

检测插件

# /data/cacti/scripts/get_nginx_clients_status.pl http://192.168.1.37/nginx_st atus

在cacti管理面板导入

cacti_graph_template_nginx_clients_stat.xml

cacti_graph_template_nginx_sockets_stat.xml

十六、常见问题与错误处理

1、400 bad request错误的原因和解决办法

配置nginx.conf相关设置如下.

client_header_buffer_size 16k;

large_client_header_buffers 4 64k;

根据具体情况调整,一般适当调整值就可以。

2、Nginx 502 Bad Gateway错误

proxy_next_upstream error timeout invalid_header http_500 http_503;

或者尝试设置:

large_client_header_buffers 4 32k;

3、Nginx出现的413 Request Entity Too Large错误

这个错误一般在上传文件的时候会出现,

编辑Nginx主配置文件Nginx.conf,找到http{}段,添加

client_max_body_size 10m; //设置多大根据自己的需求作调整.

如果运行php的话这个大小client_max_body_size要和php.ini中的如下值的最大值

一致或者稍大,这样就不会因为提交数据大小不一致出现的错误。

post_max_size = 10M

upload_max_filesize = 2M

4、解决504 Gateway Time-out(nginx)

遇到这个问题是在升级discuz论坛的时候遇到的

一般看来, 这种情况可能是由于nginx默认的fastcgi进程响应的缓冲区太小造成的,

这将导致fastcgi进程被挂起, 如果你的fastcgi服务对这个挂起处理的不好, 那么最后就

极有可能导致504 Gateway Time-out

现在的网站, 尤其某些论坛有大量的回复和很多内容的, 一个页面甚至有几百K。

默认的fastcgi进程响应的缓冲区是8K, 我们可以设置大点

在nginx.conf里, 加入:

fastcgi_buffers 8 128k

这表示设置fastcgi缓冲区为8×128k

当然如果您在进行某一项即时的操作, 可能需要nginx的超时参数调大点,例如设置成60秒:send_timeout 60;

只是调整了这两个参数, 结果就是没有再显示那个超时, 可以说效果不错, 但是也

可能是由于其他的原因, 目前关于nginx的资料不是很多, 很多事情都需要长期的经验

累计才有结果, 期待您的发现哈!

5、如何使用Nginx Proxy

朋友一台服务器运行tomcat 为8080端口,IP:192.168.1.2:8080,另一台机器

IP:192.168.1.8. 朋友想通过访问http://192.168.1.8即可访问tomcat服务.配置如下:

在192.168.1.8的nginx.conf上配置如下:

server {

listen 80;

server_name https://www.sodocs.net/doc/6618243060.html,

location / {

proxy_pass http://192.168.1.2:8080;

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

}

}

6、如何关闭Nginx的LOG

access_log /dev/null;

error_log /dev/null;

十七、相关资源下载

1. nginx配置示例及脚本下载:

# wget https://www.sodocs.net/doc/6618243060.html,/lemp/scripts.tar.gz #此脚本范例定期更新.

【附】:

本文档定期更新,同时欢迎朋友多提宝贵意见,丰富nginx tips内容.

最新的文档发布.请朋友们关注: https://www.sodocs.net/doc/6618243060.html,

系统管理员易犯错误及解决方法汇总

系统管理员易犯错误及解决方法汇总 本文分享的都是系统管理员在工作的时候容易犯的错误,经抚琴煮酒整理并提供解决方法,希望可以给大家一些指导,避免在工作中出现此类问题。作者简介:余洪春,网名抚琴煮酒,英文名Andrew.Yu,武汉某外企高级Linux/Unix系统管理员、项目实施工程师,红帽RHCE 讲师,擅长负载均衡高可用和中小型证券类和商务网站架构,目前关注网站架构研究及网络安全。 一、安装FreeBSD后无法重启 问题描述: 装惯了Linux的人肯定知道一般会有个boot分区,可是在bsd就不那么容易了。在安装FreeBSD 8.1的时候遇到了问题,查阅了chinaunix上面,正好也有相关问题整理,特摘录如下: 我要求FreeBSD分区: 2G For / 4G For swap 10G For /root 256M For /boot 其余 for /usr 安装正常,结果安装重启后便出现杯具了: >> FreeBSD/i386 BOOT Default: 0:da(0,a)/boot/kernel/kernel boot: 原因: 通过网上查资料,了解到手动引导的全过程,发现了问题所在: 由于独立分区/boot造成了FreeBSD引导过程中无法正确找到内核引导的位置。 解决方法: 通过 boot: 0:da(0,e)/loader 可以解决引导问题,然后进入loader界面 *这个引导盘符根据da0s1x 的 x 得来,因此你安装系统的时候/boot所在分区区号,才是真正的x字母,如果不知道就从往后试试 同样由于默认kernel位置是/boot/kernel所以依然需要手动加载 ok load kernel/kernel 获得kernel信息后 ok boot 这样就可以正常引导了。 但是这样还没有彻底解决问题,随后还需要在磁盘挂载的时候输入 mount root>ufs:/dev/da0s1a 才能进入系统,而且每次重启都手动一次。所以其实问题没有彻底解决。 所以,为了避免以上的/boot问题,目前我装机一般规范化操作,一般只分三个区,避免独立分区/boot,也希望玩Linux的朋友们重视下这个问题。 2048M For / 4096M For swap 其余的均For /usr

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.sodocs.net/doc/6618243060.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 502错误触发条件与解决办法汇总===

Nginx 502错误触发条件与解决办法汇总 一些运行在Nginx上的网站有时候会出现502 Bad Gateway错误,有些时候甚至频繁的出现。有些站长是在刚刚转移到Nginx之后就出现了这个问题,所以经常会怀疑这是不是Nginx的问题,但事实上这是个误区。以... 一些运行在Nginx上的网站有时候会出现“502 Bad Gateway”错误,有些时候甚至频繁的出现。有些站长是在刚刚转移到Nginx之后就出现了这个问题,所以经常会怀疑这是不是Nginx的问题,但事实上这是个误区。 以下是从张宴和Ayou的博客搜集整理的一些Nginx 502错误的排查方法,供大家参考: Nginx 502错误的原因比较多,是因为在代理模式下后端服务器出现问题引起的。这些错误一般都不是nginx本身的问题,一定要从后端找原因!但nginx把这些出错都揽在自己身上了,着实让nginx的推广者备受置疑,毕竟从字眼上理解,bad gateway?不就是bad nginx吗?让不了解的人看到,会直接把责任推在nginx身上,希望nginx下一个版本会把出错提示写稍微友好一些,至少不会是现在简单的一句502 Bad Gateway,另外还不忘附上自己的大名。 Nginx 502的触发条件 502错误最通常的出现情况就是后端主机当机。在upstream配置里有这么一项配置:proxy_next_upstream,这个配置指定了nginx在从一个后端主机取数据遇到何种错误时会转到下一个后端主机,里头写上的就是会出现502的所有情况拉,默认是error timeout。error就是当机、断线之类的,timeout就是读取堵塞超时,比较容易理解。我一般是全写上的: proxy_next_upstream error timeout invalid_header http_500 http_503; 不过现在可能我要去掉http_500这一项了,http_500指定后端返回500错误时会转一个主机,后端的jsp出错的话,本来会打印一堆stacktrace的错误信息,现在被502取代了。但公司的程序员可不这么认为,他们认定是nginx出现了错误,我实在没空跟他们解释502的原理了…… 503错误就可以保留,因为后端通常是apache resin,如果apache死机就是error,但resin死机,仅仅是503,所以还是有必要保留的。 解决办法 遇到502问题,可以优先考虑按照以下两个步骤去解决。 1、查看当前的PHP FastCGI进程数是否够用:

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常见错误与解决方法 上海纽斯达科技有限公司 2014-10-25

文档状态 目的: 在Nginx 服务器出现故障时,能快速定位并解决相关错误。 保密: 本文档仅供内部使用,请勿外传 概述: Nginx 常见错误与问题之解决方法技术指南。 安装环境: 系统环境:redhat enterprise 6.5 64bit 文件状态: 【 】草稿 【 】修改稿 【√】正式发布 文档编号 Nsdkj-778 保 密 等 级 限制 作 者 刘恒亮 最后完成日期 2014-12-25 审 核 人 最后审核日期 2014-12-25 批 准 人 最后批准日期 2014-12-25

1、Nginx 常见启动错误 有的时候初次安装nginx的时候会报这样的错误 sbin/nginx -c conf/nginx.conf 报错内容:sbin/nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory 启动时如果报异常error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory 这说明我们的环境还不是和启动需要 小小的配置一下 解决方法(直接运行): 32位系统 [root@sever lib]# ln -s /usr/local/lib/libpcre.so.1 /lib 64位系统 [root@sever lib]# ln -s /usr/local/lib/libpcre.so.1 /lib64 然后执行ps -ef | grep nginx 查看nginx进程确认是否真的已经启动了,在进程列表里会有最起码两个, worker(nginx工作进程)和master(nginx主进程) root 4349 1 0 02:24 ? 00:00:00 nginx: master process sbin/nginx -c conf/nginx.conf nginx 4350 4349 0 02:24 ? 00:00:00 nginx: worker process root 4356 28335 0 02:30 pts/1 00:00:00 grep nginx NGINX 就 OK了 2、400 bad request错误的原因和解决办法 配置nginx.conf相关设置如下. client_header_buffer_size 16k; large_client_header_buffers 4 64k; 根据具体情况调整,一般适当调整值就可以。 3、Nginx 502 Bad Gateway错误 在php.ini和php-fpm.conf中分别有这样两个配置项:max_execution_time和 request_terminate_timeout。

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

Nginx文件服务器和虚拟主机的配置 https://www.sodocs.net/doc/6618243060.html,的配置文件: 1.游戏服务器: server { listen 80; server_name https://www.sodocs.net/doc/6618243060.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.sodocs.net/doc/6618243060.html,.log access; } 2.客户端的配置: server { listen 80; server_name https://www.sodocs.net/doc/6618243060.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; } }

linux centos安装nginx常见错误及解决办法

1. 安装完成Nginx后无法站外访问? 刚安装好nginx一个常见的问题是无法站外访问,本机wget、telnet都正常。而服务器之外,不管是局域网的其它主机还是互联网的主机都无法访问站点。如果用telnet的话,提示: 正在连接到192.168.0.xxx...不能打开到主机的连接,在端口 80: 连接失败 如果用wget命令的话,提示: Connecting to 192.168.0.100:80... failed: No route to host. 如果是以上的故障现象,很可能是被CentOS的防火墙把80端口拦住了,尝试执行以下命令,打开80端口: iptables -I INPUT -p tcp --dport 80 -j ACCEPT 然后用: /etc/init.d/iptables status 查看当前的防火墙规则,如果发现有这样一条: ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 就说明防火墙规则已经添加成功了,再在站外访问就正常了。 2. 编译pcre错误(源码安装nginx必须先要装pcre) libtool: compile: unrecognized option `-DHAVE_CONFIG_H' libtool: compile: Try `libtool --help' for more information. make[1]: *** [pcrecpp.lo] Error 1 make[1]: Leaving directory `/usr/local/src/pcre-8.21' make: *** [all] Error 2

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系列 一信号与配置 一、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 错误处理方法

Nginx (―engine x‖) 是一个高性能的HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。Nginx 是由Igor Sysoev 为俄罗斯访问量第二的Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。Nginx 超越Apache 的高性能和稳定性。 Nginx+Tomcat是目前主流的Java web架构,很多公司在使用,Nginx+Tomcat通过简单的配置,可以实现高性能的负载均衡,通过本文学习,可以实现Nginx+Tomcat 负载均衡。 工具资源 1、Java运行环境,JDK 2、Tomcat7.0.65压缩版下载 3、Nginx1.8.1稳定版下载 本文基于win10进行配置 配置步骤 1、JDK环境配置略 2、Tomcat安装配置 请参考:一台服务器安装运行多个Tomcat及注册服务 本测试安装两个Tomcat,端口分别是8801和8802 安装配置完成后请确保每一个Tomcat可以正常访问 为了区分两个Tomcat,本文将第二个Tomcat的页面名称改为:Apache Tomcat/7.0.65-2 3、Nginx配置

1.解压Nginx到D盘根目录 2.修改Nginx配置 #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 {

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.sodocs.net/doc/6618243060.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.sodocs.net/doc/6618243060.html,; location ~ ^/$ { rewrite ^/(.*) /jboss/ break; proxy_pass https://www.sodocs.net/doc/6618243060.html,; } } }

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

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服务器的编译安装与配置】 安装配置服务器失败

【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+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.sodocs.net/doc/6618243060.html,f /etc/https://www.sodocs.net/doc/6618243060.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" '

服务器故障解决思路

遇到服务器故障,问题出现的原因很少可以一下就想到。基本上都会从以下步骤入手: 一、尽可能搞清楚问题的前因后果 不要一下子就扎到服务器前面,你需要先搞明白对这台服务器有多少已知的情况,还有故障的具体情况。不然你很可能就是在无的放矢。 必须搞清楚的问题有: ? 故障的表现是什么?无响应?报错? ? 故障是什么时候发现的? ? 故障是否可重现? ? 有没有出现的规律(比如每小时出现一次) ? 最后一次对整个平台进行更新的内容是什么(代码、服务器等)? ? 故障影响的特定用户群是什么样的(已登录的, 退出的, 某个地域的…)? ? 基础架构(物理的、逻辑的)的文档是否能找到? ? 是否有监控平台可用? (比如Munin 、Zabbix 、 Nagios 、 New Relic … 什么都可以) ? 是否有日志可以查看?. (比如Loggly 、Airbrake 、 Graylog…) 最后两个是最方便的信息来源,不过别抱太大希望,基本上它们都不会有。只能再继续摸索了。 二、有谁在? 1 2 $ w $ last

用这两个命令看看都有谁在线,有哪些用户访问过。这不是什么关键步骤,不过最好别在其他用户正干活的时候来调试系统。有道是一山不容二虎嘛。(ne cook in the kitchen is enough.) 三、之前发生了什么? 1 $ history 查看一下之前服务器上执行过的命令。看一下总是没错的,加上前面看的谁登录过的信息,应该有点用。另外作为admin 要注意,不要利用自己的权限去侵犯别人的隐私哦。 到这里先提醒一下,等会你可能会需要更新 HISTTIMEFORMAT 环境变量来显示这些命令被执行的时间。对要不然光看到一堆不知道啥时候执行的命令,同样会令人抓狂的。 四、现在在运行的进程是啥? 1 2 $ pstree -a $ ps aux 这都是查看现有进程的。 ps aux 的结果比较杂乱, pstree -a 的结果比较简单明了,可以看到正在运行的进程及相关用户。 五、监听的网络服务 1 2 3 $ netstat -ntlp $ netstat -nulp $ netstat -nxlp 我一般都分开运行这三个命令,不想一下子看到列出一大堆所有的服务。netstat -nalp 倒也可以。不过我绝不会用 numeric 选项 (鄙人一点浅薄的看法:IP 地址看起来更方便)。 找到所有正在运行的服务,检查它们是否应该运行。查看各个监听端口。在netstat 显示的服务列表中的PID 和 ps aux 进程列表中的是一样的。 如果服务器上有好几个Java 或者Erlang 什么的进程在同时运行,能够按PID 分别找到每个进程就很重要了。 通常我们建议每台服务器上运行的服务少一点,必要时可以增加服务器。如果你看到一台服务器上有三四十个监听端口开着,那还是做个记录,回头有空的时候清理一下,重新组织一下服务器。

1.1 nginx部署(单机)-手动安装

注: 在配置时,建议使用非root用户配置,本文档以【用户密码:nginx/nginx】【目录:/nginx】为例进行说明 文档中执行命令为蓝色字体;配置文件为粉色字体;重点标记为红色字体 1.单机部署 1.1.准备 上传【1.1 nginx部署介质.zip】包到安装目录/nginx,执行解压得到soft目录 unzip 1.1\nginx部署介质.zip 1.2.安装 1.2.1.解压依赖库 cd /nginx/soft &&tar -zxvf pcre-8.35.tar.gz&&tar -zxvf zlib-1.2.8.tar.gz&&tar -zxvf openssl-1.0.1c.tar.gz 1.2.2.安装nginx cd /nginx/soft&&tar -xvfnginx-1.11.5.tar.gz&&cd nginx-1.11.5&&./configure --prefix=/nginx/nginx--with-pcre=/nginx/soft/pcre-8.35 --with-zlib=/nginx/soft/zlib-1.2.8 --with-openssl=/nginx/soft/openssl-1.0.1c&&make&&make install 安装之后soft目录不能删除! 1.2.3.验证 进入/nginx/nginx,出现以下4个目录conf、html、logs、sbin 1.3.配置 1.3.1.修改配置nginx.conf文件 cd/nginx/nginx/conf vi nginx.conf 删除原来所有内容,使用以下内容,或者复制soft下面nginx.conf至此目录,然后进行修改

相关主题