Below you will find pages that utilize the taxonomy term “nginx”
December 14, 2013
Nginx利用多核cpu提高性能_配置参数worker_cpu_affinity
"上篇文章我们介绍了Nginx 的优化方法,这里主要对worker_cpu_affinity参数详细介绍一下.(官方http://nginx.org/en/docs/ngx_core_module.html#worker_cpu_affinity ) 简介 Nginx默认没有开启利用多核cpu,我们可以通过增加worker_cpu_affinity配置参数来充分利用多核cpu的性能。cpu是任务处理,计算最关键的资源,cpu核越多,性能就越好。\n规则设定 (1)cpu有多少个核,就有几位数,1代表内核开启,0代表内核关闭\n(2)worker_processes最多开启8个,8个以上性能就不会再提升了,而且稳定性会变的更低,因此8个进程够用了\n演示实例 两核cpu,开启两个进程 worker_processes 2; worker_cpu_affinity 01 10; 01表示启用了第一个cpu内核,10表示启用了第二个cpu内核\nworker_cpu_affinity 01 10;表示开启了两个进程,第一个进程对应着第一个cpu内核,第二个进程对应着第二个cpu内核\n两核cpu,开启八 …"
July 14, 2013
nginx日志切割
"nginx的日志文件没有rotate功能。如果你不处理,日志文件将变得越来越大,还好我们可以写一个nginx日志切割脚本来自动切割日志文件。\n第一步就是重命名日志文件,不用担心重命名后nginx找不到日志文件而丢失日志。在你未重新打开原名字的日志文件前,nginx还是会向你重命名的文件写日志,linux是靠文件描述符而不是文件名定位文件。\n第二步向nginx主进程发送USR1信号。\nnginx主进程接到信号后会从配置文件中读取日志文件名称,重新打开日志文件(以配置文件中的日志名称命名),并以工作进程的用户作为日志文件的所有者。\n重新打开日志文件后,nginx主进程会关闭重名的日志文件并通知工作进程使用新打开的日志文件。\n工作进程立刻打开新的日志文件并关闭重名名的日志文件。\n然后你就可以处理旧的日志文件了。\nnginx日志按日期自动切割脚本如下 [shell] #nginx日志切割脚本 #author: http://www.nginx.cn #!/bin/bash #设置日志文件存放目录 logs_path=\u0026quot;/usr/local/nginx/logs/\u0026quot; #设 …"
January 14, 2013
nginx无法启动: libpcre.so.1/libpcre.so.0: cannot open shared object file解决办法
"NGINX启动时提示错误:\n/usr/local/nginx/sbin/nginx -t /usr/local/nginx/sbin/nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory\nldd $(which /usr/local/nginx/sbin/nginx)\nlinux-vdso.so.1 =\u0026gt; (0x00007fff48ff0000) libcrypt.so.1 =\u0026gt; /lib64/libcrypt.so.1 (0x0000003065800000) libpcre.so.1 =\u0026gt; not found libssl.so.6 =\u0026gt; /lib64/libssl.so.6 (0x0000003067000000) libcrypto.so.6 =\u0026gt; /lib64/libcrypto.so.6 (0x0000003066400000) libdl.so.2 =\u0026gt; …"
September 5, 2012
增加Apache2和Nginx的header长度限制
"nginx默认的header长度上限是4k,如果超过了这个值 nginx会直接返回400错误\n[error] 16613#0: *105 upstream sent too big header while reading response header from upstream\n可以通过以下2个参数来调整header上限\nclient_header_buffer_size 16k; large_client_header_buffers 4 16k;\n看起来是,nginx默认会用client_header_buffer_size这个buffer来读取header值,如果header过大,它会使用large_client_header_buffers来读取\nclient_header_buffer_size\nsyntax: client_header_buffer_size size\ndefault: 1k\ncontext: http, server\nDirective sets the headerbuffer size for the request header from …"
July 8, 2012
Nginx——关闭Nginx日志
"有时候,nginx日志十分吓人,我们有个客户受到攻击,nginx出现too many connections错误,日志5分钟就写入了10GB,硬盘很快就会满了。 那么,如何关闭Nginx日志?怎么取消/停止Nginx日志? 可以修改nginx.conf\naccess_log /dev/null; error_log /dev/null; 这样全部把他们丢到系统的黑洞里了。不用每时每刻都往系统磁盘疯狂的读写日志了 还延长硬盘的寿命。\n修改完,重启Nginx( kill -HUP cat logs/nginx.pid )即可。"
May 4, 2012
nginx: [warn] the “log_format” directive may be used only on “http” level ...解决办法
"新开了一个vps,装了最新的nginx 1.0.2版本,将原来的虚拟主机配置直接拿过来.用nginx -t 测试语法的时候,发现提示以下警告信息\n[root@centos nginx]# ./sbin/nginx -t nginx: [warn] the “log_format” directive may be used only on “http” level in /usr/local/nginx/conf/vhosts/bbs.conf:62\n解决办法如下:\n将/usr/local/nginx/conf/nginx.conf 里server段里的下面代码移出放到该server段的前面即可。\nlog_format access ‘$remote_addr – $remote_user [$time_local] “$request” ‘ ‘$status $body_bytes_sent “$http_referer” ‘ ‘”$http_user_agent” $http_x_forwarded_for’;\n如果有其的虚拟主机开启了日志,也按上面的要求移出server段放 …"
March 25, 2012
nginx 的限制连接模块limit_zone与limit_req_zone
"nginx 上有两个限制连接的模块一个是 limit_zone 另一个是 limie_req_zone,两个都可以限制连接,但具体有什么不同呢? 下面是 nginx 官网上给的解释\nlimit_req_zone Limit frequency of connections from a client. This module allows you to limit the number of requests for a given session, or as a special case, with one address. Restriction done using leaky bucket.\nlimit_zone Limit simultaneous connections from a client. This module makes it possible to limit the number of simultaneous connections for the assigned session or as a special case, from one …"
December 28, 2011
如何安装nginx的第三方模块
"昨天晚上一口气将agentzh写的” Nginx变量漫谈1-8“看完了.于是手动测试一下这些第三方模块.\n这里以HttpEchoModule模块为例.\n由于以前安装过nginx,所以这里重新configure一下.并且指定新添加的模块路径.使用–add-module=/path/to/module_name指令.可以参考:\n这里只指定了一个HttpEchoModule这个模块.模块下载地址见:,如果有多个模块的话,只需要多次使用-add-module指令即可.\n先下载HttpEchoModule模块\ncd /usr/src/soft/nginx-1.1.1/ mkdir module cd module wget \u0026#34;https://github.com/agentzh/echo-nginx-module/tarball/v0.37rc7\u0026#34; tar zxvf v0.37rc7 重新配置加入第三方模块\ncd /usr/src/soft/nginx-1.1.1 ./configure --user=www --group=www …"
September 14, 2011
Nginx作为反向代理时传递客户端IP
"因为架构的需要采用多级 Nginx 反向代理,但是后端的程序获取到的客户端 IP 都是前端 Nginx 的 IP,问题的根源在于后端的 Nginx 在 HTTP Header 中取客户端 IP 时没有取对正确的值。同样适用于前端是 Squid 或者其他反向代理的情况。(通用的解决方案是直接取服务器的变量 HTTP_X_FORWARDED_FOR 的值即可取出客户端的真实ip地址)\n首先前端的 Nginx 要做转发客户端 IP 的配置:\nlocation / {\nproxy_pass http://localhost:8000;# Forward the user’s IP address to Rails\nproxy_set_header X-Real-IP $remote_addr;\nneeded for HTTPS proxy_set_header X_FORWARDED_PROTO https; proxy_set_header X-Forwarded-For $remote_addr;\nproxy_set_header X-Forwarded-For …"
September 2, 2011
Nginx中的gzip模块简介
"gzip 语法: gzip on|off\n默认值: gzip off\n作用域: http, server, location, if (x) location\n开启或者关闭gzip模块\ngzip_buffers 语法: gzip_buffers number size\n默认值: gzip_buffers 4 4k/8k\n作用域: http, server, location 设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。例如 4 4k 代表以4k为单位,按照原始数据大小以4k为单位的4倍申请内存。 4 8k 代表以8k为单位,按照原始数据大小以8k为单位的4倍申请内存。\n如果没有设置,默认值是申请跟原始数据相同大小的内存空间去存储gzip压缩结果。\ngzip_comp_level 语法: gzip_comp_level 1..9\n默认值: gzip_comp_level 1\n作用域: http, server, location\ngzip压缩比,1 压缩比最小处理速度最快,9 压缩比最大但处理最慢(传输快但比较消耗cpu)。\ngzip_min_length 语法: …"
September 1, 2011
PHP-FPM高负载的解决办法
"这里只是介绍了php-fpm的优化方法的,但一般情况下和nginx组合使用的时候,单独优化其中一项的话,作用不是特别的大,同时还需要对nginx进行优化.nginx的做法方法参考:.上面的优化前和优化后的图,看得出前后差距还是特别的大的.\n导致nginx 502 bad gateway的PHP-CGI(FASTCGI)\nNGINX频爆502 BAD GATEWAY的错误,看了网上的教程,仍没有彻底解决。\n目前我总结的解决502 BAD GATEWAY的方式有:\n1.视服务器的性能,在php-fmp.conf里增加max_children的值,我目前用的15.\n2.用reload参数定时重载php-fpm。这个主要原因是php脚本执行时间过长造成的,重载php-fpm能杜绝这个问题。如何彻底解决php-cgi脚本占用大量内存从而导致502错误的产生还值得进一步探讨,目前该做法不失为一种好办法。\n具体的做法是,用crontab让php-fpm平滑重启,从而不影响PHP脚本的运行。\n*/10 * * * * /usr/local/php/sbin/php-fpm reload …"
September 1, 2011
Linux(nginx)下安装awstats日志分析软件
"这里用的是centos的系统,linux上的安装方法基本上都一样的.\n一.下载awstats软件\n从地址可以下载,这里使用的是最新的7.0的版本\n#cd /usr/local #wget http://cdnetworks-kr-1.dl.sourceforge.net/project/awstats/AWStats/7.0/awstats-7.0.zip#unzip awstats-7.0.zip awstats #chmod +x /usr/local/awstats/tools/awstats_configure.pl #chmod +x /usr/local/awstats/wwwroot/cgi-bin/awstats.pl #chmod +x /usr/local/awstats/tools/awstats_buildstaticpages.pl #用来存放swstats的数据文件 #mkdir /var/lib/awstats\n二.创建配置文件\n#cd /usr/local/awstats/tools/ #perl ./awstats_configure.pl\n根据提示信 …"
August 23, 2011
[教程]Nginx无缝升级教程
"今天Nginx1.1.1发布了,准备将自己的nginx版本升级一下.\n以下是我平滑将Nginx1.0.4升级到Nginx1.1.1的完整过程,作为一个教程或者备忘。\n# /usr/local/nginx/sbin/nginx –V //查看当前Nginx版本\nnginx: nginx version: nginx/1.0.4 nginx: built by gcc 4.4.4 20100726 (Red Hat 4.4.4-13) (GCC) nginx: TLS SNI support enabled nginx: configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module 一.配置nginx并编译,切记不要make install\n# wget http://nginx.org/download/nginx-1.1.1.tar.gz # tar zxvf nginx-1.1.1.tar.gz # …"
August 5, 2011
Nginx fastcgi perl (pl、cgi)支持
"1. 安装FCGI模块\n# wget http://search.cpan.org/CPAN/authors/id/B/BO/BOBTFISH/FCGI-0.70.tar.gz # tar zxvf FCGI-0.70.tar.gz # cd FCGI-0.70 # perl Makefile.PL # make # make install\n2. 安装 IO 和 IO::ALL模块\n# wget http://search.cpan.org/CPAN/authors/id/G/GB/GBARR/IO-1.25.tar.gz # tar zxvf IO-1.25.tar.gz # cd IO-1.25 # perl Makefile.PL # make # make install\n升级MakeMaker版\n#wget http://search.cpan.org/CPAN/authors/id/M/MS/MSCHWERN/ExtUtils-MakeMaker-6.54.tar.gz\n#tar zxvf ExtUtils-MakeMaker-6.54\nperl Makefile.PL …"
July 13, 2011
nginx [emerg]: getpwnam(“www”) failed
"在配置nginx提示如下错误时:\n[emerg]: getpwnam(“www”) failed\n解决方案: 在nginx.conf中 把#user nobdy改为user www www既可.\n如果还提示同样的错误,请检查www组和www用户是否存在,不存在的话,直接创建即可\n/usr/sbin/groupadd www /usr/sbin/useradd -g www www"
April 16, 2011
nginx下关于PHP-FPM在高负载下的优化配置
"今天调整了服务器的PHP-FPM配置,其中有几个参数可以在网站在高并发下,保持服务器的稳定.不会挂掉.请看下面的内容.\n代码:\n\u0026lt;value name=\u0026#34;max_children\u0026#34;\u0026gt;5\u0026lt;/value\u0026gt; Settings group for \u0026#39;apache-like\u0026#39; pm style \u0026lt;value name=\u0026#34;apache_like\u0026#34;\u0026gt; Sets the number of server processes created on startup. Used only when \u0026#39;apache-like\u0026#39; pm_style is selected \u0026lt;value name=\u0026#34;StartServers\u0026#34;\u0026gt;20\u0026lt;/value\u0026gt; Sets the desired minimum number of idle server processes. Used only when \u0026#39;apache-like\u0026#39; pm_style is selected …"
April 16, 2011
如何安装cacti监控nginx插件
"Scripts and templates for nginx.\nNginx –\nProvide graphing nginx clients statistics (active, reading, writing, waiting) and nginx socket statistics (accepts, handled, requests). It’s a formal devision used only for graphs usability.\nFor use do next steps:\nEnable nginx http_stub_status_module at configure stage (if requared).\nEnable stub status. Add to nginx.conf (in any server context):\nlocation /nginx_status {\nstub_status on;\ndisable access_log if requared access_log off;\n#allow XX.YY.AA.ZZ; …"
April 16, 2011
nginx php-fpm性能优化设置
"When you running a highload website with PHP-FPM via FastCGI, the following tips may be useful to you : ) 如果您高负载网站使用PHP-FPM管 理FastCGI,这些技巧也许对您有用:)\nCompile PHP’s modules as less as possible, the simple the best (fast); 1.尽量少安装PHP模块,最简单是最好(快)的 Increas PHP FastCGI child number to 100 and even more. Sometime, 200 is OK! ( On 4GB memory server); 2.把您的PHP FastCGI子进程数调到100或以上,在4G内存的服务器上200就可以 注:我的1g测试机,开64个是最好的,建议使用压力测试获取最佳值\nUsing SOCKET PHP FastCGI, and put into /dev/shm on Linux; 3.使用socket连 …"
April 16, 2011
cacti 监控nginx 出现 no (LWP::UserAgent not found)的解决办法
"在上一篇\u0026laquo; 如何安装cacti监控nginx的插件 \u0026raquo;文章里我们介绍了如何安装,但在最后发现执行\nget_nginx_clients_status.pl http://nginx.server.tld/nginx_status\n的时候,提示 no (LWP::UserAgent not found) 错误的原因是该系统 perl 缺少了相关组建,解决办法:\n[shell]yum -y install perl-libwww-perl[/shell] 如果还不行,再按下面的方法解决:\n[shell]#perl -MCPAN -e shell 一直回车,知道出现cpan\u0026amp;amp;gt;\u0026amp;nbsp; 提示符开始。 cpan\u0026amp;gt; install LWP::UserAgent cpan\u0026amp;gt; exit [/shell] 如果perl相关组件安装成功,就能正常显示了。\n[root@localhost scripts]# ./get_nginx_clients_status.pl nginx_active:149 …"
April 13, 2011
20个Nginx Web服务器最佳安全实践
"Nginx是一个轻量级,高性能的Web服务器/反向代理和电子邮件代理(IMAP/POP3),它可以运行在UNIX,GNU/Linux,BSD变种,MAC OS X,Solaris和Microsoft Windows上。根据Netcraft的调查数据显示,互联网上6%的域名都使用了Nginx Web服务器。Nginx是解决C10K问题的服务器之一,与传统服务器不一样,Nginx不依赖于线程处理请求,相反,它使用了一个更具扩展性的事件驱动(异步)架构。Nginx在很多高流量网站上得到了应用,如WordPress,Hulu,Github和SourceForge。\n本文的主要目是介绍如何提高运行在Linux或UNIX类操作系统上的Nginx Web服务器的安全性。\nNginx默认配置文件和默认端口\n◆ /usr/local/nginx/conf/ – Nginx服务器配置目录,/usr/local/nginx/conf/nginx.conf 是主配置文件\n◆ /usr/local/nginx/html/ – 默认文档位置\n◆ /usr/local/nginx/logs/ – …"
January 16, 2011
nginx和apache下对域名进行301重定向-优化篇
"一般网站为了将网站的权重从yoursite.com自动转向到www.yoursite.com,这里我们在nginx下来实现永久跳转.\n将不带WWW的主域名重定向到带WWW的二级域名,实现两个域名合并,方法如下:\nNginx配置方法:\n方法1:\nserver {\nserver_name www.yoursite.com yoursite.com;\nif ($host != ‘www.yoursite.com’ ) {\nrewrite ^/(.*)$ http://www.yoursite.com/$1 permanent;\n}\n…\n}\n方法2:\n类似apache,单独给yoursite.com做一个虚拟主机\nserver {\nserver_name yoursite.com;\nrewrite ^(.*) http://www.yoursite.com$1 permanent;\n}\nApache虚拟主机配置:\nDocumentRoot /data/www/www.yoursite.com\nServerName www.yoursite.com\nDirectoryIndex …"
December 27, 2010
web服务器做301重定向优化设置(apache,nginx,iis)
"做网站优化的时候,网站301重定向是一个非常重要的操作方式。这样能够把多个域名的权重集中到一个域名,例如:www.haohtml.com和 haohtml.com,我们把haohtml.com重定向到www.haohtml.com,搜索引擎在搜索的时候,会把搜索结果或者Google评级的时候都集 中到www.haohtml.com。但是,在设置301的时候,会根据服务器的不同,有不同的设置。\n一般情况下,网站301重定向可以分为IIS、Apache、Nginx三种,接下来我说明一下在虚拟主机下如何实现301重定向。\nIIS:如果使用ASP的网站程序,可以使用asp脚本实现301重定向:写入header.asp或者其他头部文件。 这种方法最为简单,当然空间支持ISAPI 可以在网站根目录新建一个httpd.ini 将haohtml.com转移到www.haohtml.com上\n[ISAPI_Rewrite] # 3600 = 1 hour CacheClockRate 3600 RepeatLimit 32 RewriteCond Host: ^haohtml.com.com$ …"
December 27, 2010
修改Nginx的header伪装服务器
"有时候为了伪装自己的真实服务器环境.\n不像让对方知道自己的webserver真实环境,就不得不修改我们的webserer软件了!\n今天看了一下baidu.com的webserver感觉像是nginx修改的.\nC:curl-7.18.0\u0026gt;curl.exe -I www.baidu.com\nHTTP/1.1 200 OK\nDate: Tue, 11 Mar 2008 05:00:39 GMT\nServer: BWS/1.0\nContent-Length: 3022\nContent-Type: text/html\nCache-Control: private\nExpires: Tue, 11 Mar 2008 05:00:39 GMT\nSet-Cookie: BAIDUID=41BB2845D3E8BC1AEE99D4CECB90C50A:FG=1; expires=Tue, 11-\n8 05:00:39 GMT; path=/; domain=.baidu.com\nP3P: CP=” OTI DSP COR IVA OUR IND COM “\n哈只是感觉,人家有坚强的开发后盾,可能是 …"
December 27, 2010
nginx上如何支持.htaccess伪静态转向
"我们知道在apache上有一个常用的功能.htaccess转向,只要apache编译的时候指明支持rewrite模块就可以了。\n但是换到nginx上方法会有一点不一样,网上很多人说把.htaccess转向规则写到nginx的配置文件里面,这个办法是官方提供的方法之一,肯定是可行的。但是这个方法有一个缺陷:不方便,下次你要更改一个伪静态转向规则的时候还得去nginx的配置文件或者nginx的虚拟网站的配置文件里面去改,相比apache直接在目录下放置.htaccess文件,nginx的这个办法显然很原始。\n不过不要紧,其实是有办法的,在nginx的配置文件中 include .htaccess 文件就可以实现相同的功能了。\n举个例子,我现在要把www.blogguy.cn的.htaccess从apache上迁移到nginx上,可以需要以下几个步骤:\n第一步:修改.htaccess文件,因为apache的rewrite转向规则跟nginx的转向规则还是有一些不一样的,典型的不一样有nginx的根目录需要写在每行转向的地址前,每行规则必须以分号(;)结束,301或者404等跳转使用不同的格 …"
December 21, 2010
nginx下实现浏览目录的功能
"nginx默认是不允许列出整个目录的。如需此功能,需要修改nginx的配置文件.方法如下: 打开nginx.conf文件,在location server 或 http段中加入 autoindex on; 另外两个参数最好也加上去:\nautoindex_exact_size off; 默认为on,显示出文件的确切大小,单位是bytes。 改为off后,显示出文件的大概大小,单位是kB或者MB或者GB\nautoindex_localtime on; 默认为off,显示的文件时间为GMT时间。 改为on后,显示的文件时间为文件的服务器时间\n详细参照: http://wiki.nginx.org/NginxChsHttpAutoindexModule\n如果想希望目录列表支持header,footer则可以安装三方插件: http://wiki.nginx.org/NginxNgxFancyIndex\n或者直接修改nginx源码,如 http://docs.linuxtone.org 即为简单修改NGINX源码得到的效果.\n来源: …"
December 20, 2010
Nginx中文件缓存设置
"十三 Nginx Cache 服务配置\n如果需要将文件缓存到本地,则需要增加如下几个子参数:\nproxy_store on 用来启用缓存到本地的功能\nproxy_store_access user:rw group:rw all:rw;\nproxy_temp_path 缓存目录;\n在经过上一步配置之后,虽然文件被缓存到本地磁盘上,但每次请求仍会向远端拉取文件,为了避免去远端拉取文件,必须修改proxy_pass代码:\nif ( ! -e $request_file) {\nproxy_pass http://freeke;\n}\n即修改为有条件地去执行proxy_pass,这个条件就是当的文件在本地的proxy_temp_path指定的目录下不存在时,再向后端拉取.\n摘自:Nginx指南"
December 20, 2010
使用 awstats 分析 Nginx 的访问日志
"auth_basic “admin”; #用户名\nauth_basic_user_file /opt/ngx/conf/admin.pass; #密码包路径\n这篇文章内容部分有问题的,大家用的时候注意一下.特别是nginx的虚拟主机采用apache密码认证那一块的\nauth_basic \u0026#34;admin\u0026#34;; #用户名 /opt/ngx/conf/admin.pass; #密码包路径 正解的格式应该为: auth_basic \u0026#34;admin\u0026#34;; #用户名 auth_basic_user_file /opt/ngx/conf/admin.pass; #密码包路径 **主要目录有三个:**1./data/web #虚拟主机根目录 2./data/webroot/awstats #开始统计分析Awstats 日志(分析前需要将运行日志切割脚本 logcron.sh),\n分析脚本为:\n#/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update …"
December 16, 2010
[推荐]nginx配置文件的优化-关于nginx的一些优化
"总结的很好的,推荐大家看看,非常有用的.\n一般来说nginx配置文件中对优化比较有作用的为以下几项:\nworker_processes 8;\nnginx进程数,建议按照cpu数目来指定,一般为它的倍数。\nworker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;\n为每个进程分配cpu,上例中将8个进程分配到8个cpu,当然可以写多个,或者将一个进程分配到多个cpu。\nworker_rlimit_nofile 102400;\n这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n的值保持一致。\nuse epoll;\n使用epoll的I/O模型,这个不用说了吧。\nworker_connections 102400;\n每个进程允许的最多连接数,理论上每台nginx服务器的最大连接数 …"
December 16, 2010
nginx中stub_status模块的功能
"Nginx中的stub_status模块主要用于查看Nginx的一些状态信息.\n本模块默认是不会编译进Nginx的,如果你要使用该模块,则要在编译安装Nginx时指定:\n./configure –with-http_stub_status_module\n配置示例如代码:\nserver\n{\nlistent 80;\nserver_name status.yourdomain.com;\nlocation / {\nstub_status on;\naccess_log off;\nallow 192.168.0.1.2;\ndeny all;\n}\n}\n======================================\n语法: stub_status on\n默认值:None\n使用环境:location\n该指令用于开启Nginx状态信息\n访问以上示例中配置的 http://status.yourdomain.com/,则显示的Nginx状态信息如下:\nActive connections: 对后端发起的活动连接数.\nServer accepts handled requests: Nginx总 …"
December 14, 2010
Nginx禁止通过IP,未绑定域名访问服务器
"今天要在Nginx上设置禁止通过IP访问服务器,只能通过域名访问,这样做是为了避免别人把未备案的域名解析到自己的服务器IP而导致服务器被断网,从网络上搜到以下解决方案:\n============================== nginx的默认虚拟主机在用户通过IP访问,或者通过未设置的域名访问(比如有人把他自己的域名指向了你的ip)的时候生效\n最关键的一点是,在server的设置里面添加这一行:\nlisten 80 default;\n后面的default参数表示这个是默认虚拟主机。\n这个设置非常有用。 比如别人通过ip或者未知域名访问你的网站的时候,你希望禁止显示任何有效内容,可以给他返回500.\n目前国内很多机房都要求网站主关闭空主机头,防止未备案的域名指向过来造成麻烦。就可以这样设置:\nserver { listen 80 default; return 500; }\n也可以把这些流量收集起来,导入到自己的网站,只要做以下跳转设置就可以:\nserver { listen 80 default; rewrite ^(.*) http://www.mydomain.com …"
November 12, 2010
nginx location基础
"基本语法\nlocation [=|~|~*|^~] /uri/ { … }\n= 严格匹配。如果这个查询匹配,那么将停止搜索并立即处理此请求。\n~ 为区分大小写匹配\n~* 为不区分大小写匹配\n!~和!~*分别为区分大小写不匹配及不区分大小写不匹配\n^~ 如果把这个前缀用于一个常规字符串,那么告诉nginx 如果路径匹配那么不测试正则表达式。\n例如:\nlocation = / { # 只匹配 / 查询。\nlocation / { # 匹配任何查询,因为所有请求都已 / 开头。但正则表达式规则和长的块规则将被优先和查询匹配。\nlocation ^~ /images/ { # 匹配任何已 /images/ 开头的任何查询并且停止搜索。任何正则表达式将不会被测试。\nlocation ~* .(gif|jpg|jpeg)$ { # 匹配任何以 gif、jpg 或 jpeg 结尾的请求。\n++ 文件及目录匹配\n-f和!-f用来判断是否存在文件\n-d和!-d用来判断是否存在目录\n-e和!-e用来判断是否存在文件或目录\n-x和!-x用来判断文件是否可执行\n++ 一些可用的全局变量\n$args …"
November 12, 2010
nginx配置文件中的location中文详解
"location\n语法:location [=|~|~*|^~] /uri/ { … } 默认:否\n上下文:server\n这个指令随URL不同而接受不同的结构。你可以配置使用常规字符串和正则表达式。如果使用正则表达式,你必须使用 ~* 前缀选择不区分大小写的匹配或者 ~ 选择区分大小写的匹配。\n确定 哪个location 指令匹配一个特定指令,常规字符串第一个测试。常规字符串匹配请求的开始部分并且区分大小写,最明确的匹配将会被使用(查看下文明白 nginx 怎么确定它)。然后正则表达式按照配置文件里的顺序测试。找到第一个比配的正则表达式将停止搜索。如果没有找到匹配的正则表达式,使用常规字符串的结果。\n有两个方法修改这个行为。第一个方法是使用 “=”前缀,将只执行严格匹配。如果这个查询匹配,那么将停止搜索并立即处理这个请求。例子:如果经常发生”/”请求,那么使用 “location = /” 将加速处理这个请求。\n第二个是使用 ^~ 前缀。如果把这个前缀用于一个常规字符串那么告诉nginx 如果路径匹配那么不测试正则表达式。\n而且它重要在于 NGINX 做比较没有 URL 编码,所以如果 …"
November 12, 2010
nginx下禁止目录运行php脚本
"为了安全起见,我们一般会对上传目录禁止运行php脚本\n在 apache 下面我们可以通过:\nphp_flag engine off\n的方式来来禁用目录下文件php执行权限。\n那么在 nginx 里面同样可以实现这种方法,那就是location的优先匹配,关于location可以参考我之前的一批文章http://226617.cn/archives/392.htm\n这里简单就举个例子\nlocation ^~ /attachments/\n{\naccess_log off;\n}\n这样 attachments这个目录 就不会再去跳转给fastcgi去执行php了.这里利用了nginx下location指令的处理顺序优先级特点.\n但上面的方法只能算一种技巧,一般不这样设置,正确的方法为:\nlocation /upload/ {\nlocation ~ .*.(php)?$\n{\ndeny all;\n}\n}\n而对于多个目录的话,可以一起进行限定:\nlocation ~* ^/(attachments|images)/.*.(php|php5)$\n{\ndeny all;\n}\n注意这段secion一定要放 …"
November 9, 2010
Nginx中的upstream
"Nginx中upstream有以下几种方式:\n1、轮询(weight=1) 默认选项,当weight不指定时,各服务器weight相同, 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。\n[shell]upstream bakend { server 192.168.1.10; server 192.168.1.11; } [/shell]\n2、weight 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 如果后端服务器down掉,能自动剔除。 比如下面配置,则1.11服务器的访问量为1.10服务器的两倍。\n[shell]upstream bakend { server 192.168.1.10 weight=1; server 192.168.1.11 weight=2; }[/shell]\n3、ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session不能跨服务器的问题。 如果后端服务器down掉,要手工down掉。\n[shell]upstream …"
October 22, 2010
nginx与lvs做负载均衡的比较
"lvs和nginx都可以用作多机负载的方案,它们各有优缺,在生产环境中需要好好分析实际情况并加以利用。\n首先提醒,做技术切不可人云亦云,我云即你云;同时也不可太趋向保守,过于相信旧有方式而等别人来帮你做垫被测试。把所有即时听说到的好东西加以钻研,从而提高自己对技术的认知和水平,乃是一个好习惯。\n下面来分析一下两者:\n一、lvs的优势:\n1、抗负载能力强,因为lvs工作方式的逻辑是非常之简单,而且工作在网络4层仅做请求分发之用,没有流量,所以在效率上基本不需要太过考虑。在我手里的lvs,仅仅出过一次问题:在并发最高的一小段时间内均衡器出现丢包现象,据分析为网络问题,即网卡或linux2.4内核的承载能力已到上限,内存和cpu方面基本无消耗。\n2、配置性低,这通常是一大劣势,但同时也是一大优势,因为没有太多可配置的选项,所以除了增减服务器,并不需要经常去触碰它,大大减少了人为出错的几率。\n3、工作稳定,因为其本身抗负载能力很强,所以稳定性高也是顺理成章,另外各种lvs都有完整的双机热备方案,所以一点不用担心均衡器本身会出什么问题,节点出现故障的话,lvs会自动判别,所以系统整体是非常稳定 …"
October 18, 2010
Nginx优化配置(转)
"这里主要讲的是Nginx的优化方法,同时还需要优化php-fpm配置,方法请参考:.\n优化前:\n优化后:\n看得出差距还是特别的大的.\n一般来说nginx配置文件中对优化比较有作用的为以下几项:\nworker_processes 8;\nnginx进程数,建议按照cpu数目来指定,一般为它的倍数,平时设置为2倍。\ncpu个数查看方法参考: 和 worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000; 为每个进程分配cpu,上例中将8个进程分配到8个cpu,当然可以写多个,或者将一个进程分配到多个cpu。对worker_cu_affinity参数的优化参考:http://blog.haohtml.com/archives/14835worker_rlimit_nofile 102400;\n这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好 …"
October 14, 2010
[教程]CentOS平台安装lemp
"教程最新版本为:Centos下安装lnmp教程(最新版2012-02-05) http://blog.haohtml.com/archives/12473 点击下载本教程使用的批处理shell安装脚本: webserver_install.sh.本shell脚本不适合x64的系统.有些库文件需要从/usr/lib64/目录里的文件复制到/usr/lib/目录才可以.\n本教程已经在Centos5.5, Centos6.0下测试通过.测试:2011-07-12\nCentos6.0下需要注意事项:\n1.对于ImageMagick,要使用 ftp://mirror.aarnet.edu.au/pub/imagemagick/ImageMagick-6.7.1-0.tar.gz 版本.\n2.对于imagick,要使用wget http://pecl.php.net/get/imagick-3.0.1.tgz 版本\n这里是以php-fpm这个php补丁的形式运行php的.\n第一步,准备\nyum -y install wget make zip unzip\nyum -y install patch …"
October 12, 2010
(总结)Nginx 502 Bad Gateway错误问题收集
"nginx和lighttpd的文档真的很少,更不用说中文文档了,所以收集一些和502有关的错误在这里。\n502是FastCGI出现问题,所以从FastCGI配置入手。\n1.请检查你的FastCGI进程是否启动\n2.FastCGI进程不够使用 请通过执行 netstat -anpo | grep “php-cgi” | wc -l 判断,是否接近你启动的FastCGI进程,接近你的设置,表示进程不够\n3.执行超时 请把 fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; 这几项的值调高\n4.FastCGI缓冲不够 nginx和apache一样,有前端缓冲限制 请把 fastcgi_buffer_size 32k; fastcgi_buffers 8 32k; 这几项的值调高\n5.Proxy缓冲不够 如果你使用了Proxying,请把 proxy_buffer_size 16k; proxy_buffers 4 16k; 这几项的值调高\n6.https …"
October 12, 2010
CentOS 5 VPS的nginx+php+mysql解决方案之一
"在CentOS5 VPS下的nginx+php+mysql的解决方案有多个,本文介绍其中的解决方案之一。\n本文基于64位的CentOS 5 VPS,如果是32位的VPS,请在相应部分做修改。\n本解决方案使用瑞豪开源自己编译的最新稳定版本的Nginx,fastcgi进程管理使用spawn-fcgi,还有CentOS 5自带的5.0.45版本的MySQL和5.1.6版本的php。\n优缺点 本方案的优点是使用CentOS5自带的php和mysql,扩展性好,php的各种扩展yum库里面都有,都可以直接使用;另外,由于使用系统自带的php和mysql,安全性要好一些,如果有什么漏洞都可以直接升级为centos官方的最新版本。由于使用spawn-fcgi,所以无须重新编译php。\n本方案的缺点有:\nphp和mysql都是centos自带的版本,不是最新版本,万一用到php最新版本的某些特性则就不行了。 spawn-fcgi的性能不如php-fpm,如果想用php-fpm,请参考http://rashost.com/blog/centos5-vps-nginx-solution2 安装Nginx …"
October 8, 2010
nginx配置支持php的pathinfo模式配置方法
"nginx模式不支持pathinfo模式,类似info.php/hello形式的url会被提示找不到页面。下面的通过正则找出实际文件路径和pathinfo部分的方法,让nginx支持pathinfo。\nlocation ~ \\.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; ##通过设置模拟出pathinfo set $path_info “”; set $real_script_name $fastcgi_script_name; if ($fastcgi_script_name ~ “^(.+?\\.php)(/.+)$”) { set $real_script_name $1; set $path_info $2; } fastcgi_param SCRIPT_FILENAME $document_root$real_script_name; fastcgi_param SCRIPT_NAME $real_script_name; fastcgi_param PATH_INFO …"
September 19, 2010
How to install PHP-fpm + Nginx on CentOS 5.3
"php-fpm文档中文翻译[转]:http://blog.haohtml.com/archives/9294\nIn this tutorial i will try to install php-fpm with nginx on centos 5.3. But first:\nWhat is PHP-FPM ? PHP-FPM is a patch for PHP4/5 to greatly improve PHP’s FastCGI SAPI capabilities and administration. This means that you don’t install php through your distribution’s package manager, but rather download the package from the PHP-website, and the patch from another site. You patch up the sourcecode, compile things, and get it started."
September 18, 2010
[教程]Centos5安装nginx教程及遇到的rewrite和HTTP cache错误解决办法
"有时候,我们需要单独安装nginx,来处理大量的下载请求。单独在Centos5安装nginx遇到的rewrite和HTTP cache错误解决办法:\nwget http://nginx.org/download/nginx-0.8.33.tar.gz tar -zxvf nginx-0.8.33.tar.gz cd nginx-0.8.33 ./configure –prefix=/usr/local/nginx\n安装Nginx时报错\n./configure: error: the HTTP rewrite module requires the PCRE library.\n安装pcre-devel解决问题 yum -y install pcre-devel\n错误提示:./configure: error: the HTTP cache module requires md5 functions from OpenSSL library. You can either disable the module by using\n–without-http-cache option, or …"
September 18, 2010
CentOS下安装lnmp(Nginx+PHP+MySQL)fpm
"PHP 5.3.1\nMySQL 5.0.89\nNginx 0.8.33 或 0.7.65 (可选)\n这个可比网上流传的什么一键安装包要好得多,强烈推荐此法安装,适合所有菜鸟和高手。我服务器上全用的源代码编译安装,也好不到哪去,还很费劲。我这个装完已经包含 php 的一些常用扩展, PDO,eaccelerator,memcache,tidy等等。\nCentOS 最小化安装,然后先新建一个 repo\nvi /etc/yum.repos.d/centos.21andy.com.repo 放入如下内容\n[21Andy.com]\nname=21Andy.com Packages for Enterprise Linux 5 – $basearch\nbaseurl=http://www.21andy.com/centos/5/$basearch/\nenabled=1\ngpgcheck=0\nprotect=1\n或者使用中国科技大学的yum源:\n#cd /etc/yum.repos.d\n#mv CentOS-Base.repo CentOS-Base.repo.save\n#wget …"
September 9, 2010
Nginx常用Rewrite(伪静态规则)
"信现在大部分用Linux VPS的朋友都在使用这个迅速传播的 Nginx,今天就整理一下最常见的PHP程序的Rewrite(伪静态规则)。\nWordPress:\nlocation / { index index.html index.php; 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; } }\nPHPCMS:\nlocation / { ###以下为PHPCMS 伪静态化rewrite规则 rewrite ^(.)show-([0-9]+)-([0-9]+).html$ $1/show.php?itemid=$2\u0026amp;page=$3; rewrite ^(.)list-([0-9]+)-([0-9]+).html$ …"
September 9, 2010
nginx rewrite规则和参考
"推荐参考地址: Mailing list ARChives 官方讨论区\nNginx 常见应用技术指南[Nginx Tips]\n本日志内容来自互联网和平日使用经验,整理一下方便日后参考。\n正则表达式匹配,其中:\n~ 为区分大小写匹配 ~* 为不区分大小写匹配 !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 文件及目录匹配,其中:\n-f和!-f用来判断是否存在文件 -d和!-d用来判断是否存在目录 -e和!-e用来判断是否存在文件或目录 -x和!-x用来判断文件是否可执行 flag标记有:\nlast 相当于Apache里的[L]标记,表示完成rewrite break 终止匹配, 不再匹配后面的规则 redirect 返回302临时重定向 地址栏会显示跳转后的地址 permanent 返回301永久重定向 地址栏会显示跳转后的地址 一些可用的全局变量有,可以用做条件判断(待补全)\n$args\n$content_length\n$content_type\n$document_root\n$document_uri\n$host\n$http_user_agent\n$http_cookie …"
September 9, 2010
nginx 虚拟目录的配置
"nginx貌似没有虚拟目录的说法,因为它本来就是完完全全根据目录来设计并工作的。\n如果非要给nginx安上一个虚拟目录的说法,那就只有alias标签比较“像”,干脆来说说alias标签和root标签的区别吧。\n最基本的区别:alias指定的目录是准确的,root是指定目录的上级目录,并且该上级目录要含有location指定名称的同名目录。另外,根据前文所述,使用alias标签的目录块中不能使用rewrite的break。\n说不明白,看下配置:\nlocation /abc/ { alias /home/html/abc/; }\n在这段配置下,http://test/abc/a.html就指定的是/home/html/abc/a.html。这段配置亦可改成\nlocation /abc/ { root /home/html/; }\n这样,nginx就会去找/home/html/目录下的abc目录了,得到的结果是相同的。\n但是,如果我把alias的配置改成:\nlocation /abc/ { alias /home/html/def/; }\n那么nginx将会从/home/html/def/取 …"
September 6, 2010
[教程]FreeBSD下使用ports安装Nginx + PHP5.2.6 + Php-fpm
"钟情FreeBSD的其中一个原因就是它的方便快捷的ports软件包管理,本文在安装Nginx、PHP、Php-fpm的时候也采用ports方式安装。ports是一个非常优秀的软件包管理器,如果不希望编译安装的话,使用ports安装,几个命令就能全部搞定,这对初学者来说是很有帮助的。\n事实上,Nginx 和 PHP已经在FreeBSD的ports系统里了,只是Php-fpm没有,不过,简单几个命令就能把Php-fpm添加到FreeBSD的ports中去。下面我们来看看具体的操作步骤:\n1. 安装nginx\n# cd /usr/ports/www/nginx\n# make install\n安装过程中要选择安装模块,这里我选择如下几个模块做示范\nHTTP_MODULE HTTP_REWRITE_MODULE HTTP_SSL_MODULE HTTP_STATUS_MODULE FreeBSD下的ports安装实在是太简单、方便了,没什么可多说的,下面直接安装php。\n2. 安装php\n# cd /usr/ports/lang/php5 # make install\n安装过程中,选择如下模块: …"
August 28, 2010
Nginx+keepalived负载均衡篇
"由于nginx的url hash功能可以很好的提升squid的性能,所以我把squid前端的负载均衡器更换为nginx,但是一台nginx就形成了单点,现在使用keepalived来解决这个问题,keepalived的故障转移时间很短,而且配置简单,这也是选择keepalived的一个主要原因,建议日PV值小的中小型企业web均可采用如下方案实行,下面直接上安装步骤:\n一、环境:\ncentos5.3、nginx-0.7.51、keepalived-1.1.19\n主nginx负载均衡器:192.168.0.154\n辅nginx负载均衡器:192.168.9.155\nvip:192.168.0.188\n二、安装keepalived\n#tar zxvf keepalived-1.1.19.tar.gz\n#cd keepalived-1.1.19\n#./configure –prefix=/usr/local/keepalived\n#make\n#make install\n#cp /usr/local/keepalived/sbin/keepalived /usr/sbin/\n#cp …"
June 3, 2010
nginx图片服务器的架构方案
"图片服务通常数据容量较大,而且访问也频繁,鉴于此,图片服务就会有两种问题,一是存储问题,二是访问量问题。\n存储问题就是硬盘容量问题,花钱买硬盘就可以了,看似简单,但着实也是最苦的问题。按目前探索来看,最好的方式是:在任何时刻遇到硬盘空间不够时,买颗硬 盘插上,最多改改配置,就能立刻利用;另外,硬盘要能充分利用,不然图片存储量大再加上备份,很恐怖,最好是每颗硬盘都用上100%的空间。\n访问量也是个大问题,如果服务不允许防盗链,那么访问量会引起带宽、服务器压力等问题,有钱的话直接扔CDN,没钱或者有更多的钱,就自己做吧。根据垣古 不变的真理“越老的图,访问量也相对较少”这一点,分成两大部分,一边处理最新的图片,一边处理老旧的图片。最新的图片访问量大,但存储量较少;老图片访 问量低,但存储量大。\n大概分析完了,开始制定方案。\n一、拟定一个存储目录规则:\n在现有的/a/b/abcde.jpg这样的hash方式下多加一个日期的目录变成:/200810/16/a/b/abcde.jpg或者/2008 /10/16/a/b/abcde.jpg。按日期制定这个目录规则后,就可以按年月来拆机器了。\n二、 …"
April 2, 2010
使用Nginx作为Web服务器的国内网站[原创]
"[文章作者:张宴 本文版本:v1.1 最后修改:2008.06.19 转载请注明原文链接: http://blog.s135.com/post/352/]\nNginx 超越Apache的高性能和稳定性,使得国内使用 Nginx 作为 Web 服务器的网站也越来越多,其中有新浪、网易、腾讯等门户网站,六间房、酷6等视频分享网站,Discuz!、水木社区等知名论坛,豆瓣、YUPOO等新兴Web 2.0网站。\nNginx 在国内的应用正在不断发展壮大!\n一、使用 Nginx 运行 PHP(FastCGI) 程序的网站:\n1、六间房视频( http://www.6.cn/):nginx/0.6.14 + PHP\n[root@new-host ~]# curl –head http://6.cn/reg.php\nHTTP/1.0 200 OK\nServer: nginx/0.6.14\nDate: Wed, 18 Jun 2008 00:58:20 GMT\nContent-Type: text/html\nVary: Accept-Encoding\nX-Cache: MISS from …"
April 1, 2010
使用Nginx轻松实现开源负载均衡──9 月20日在ChinaUnix技术沙龙上的演讲PPT[原创]
"[文章作者:张宴 本文版本:v1.0 最后修改:2008.09.21 转载请注明原文链接: http://blog.s135.com/post/369/]\n9月20日下午,我应邀参加了 ChinaUnix 举办的以“如何搞定服务器负载均衡?”为主题的技术沙龙( http://linux.chinaunix.net/bbs/thread-1019366-1-1.html), 很高兴能够跟诸多业界精英一起探讨交流,很荣幸能够与Unix资深系统工程师──田逸、HonestQiao,以及F5资深技术工程师──杨明非,同台演 讲。\n《使用Nginx轻松实现开源负载均衡》是我的演讲PPT(PowerPiont),现提供下载。\nPPT分为四个 部分: 1、介绍Nginx的基本特征,以及使用Nginx做负载均衡器的理由。\n2、用实例,来介绍 Nginx负载均衡在大型网站的典型应用。\n3、以实现网站动静分离为原型,对NetScaler硬件七层负载均衡和Nginx软件负 载均衡做一个对比。\n①、NetScaler负载均衡交换机动静分离系统架构图 ②、Nginx …"
April 1, 2010
Nginx 简单的负载均衡配置示例[原创]
"www.s135.com 和 blog.s135.com 域名均指向 Nginx 所在的服务器IP。\n用户访问 http://www.s135.com,将其负载均 衡到192.168.1.2:80、192.168.1.3:80、192.168.1.4:80、192.168.1.5:80四台服务器。\n用户访问 http://blog.s135.com, 将其负载均衡到192.168.1.7服务器的8080、8081、8082端口。\n以下为配置文件nginx.conf:\n引用\nuser www www;\nworker_processes 10;\n#error_log logs/error.log;\n#error_log logs/error.log notice;\n#error_log logs/error.log info;\n#pid logs/nginx.pid;\n#最大文件描述 符\nworker_rlimit_nofile 51200;\nevents\n{\nuse epoll;\nworker_connections 51200;\n}\nhttp\n{\ninclude …"
April 1, 2010
百度、新浪、Mixi、Apache社区赞助的开源 key-value分布式存储系统[原创]
"[文章作者:张宴 本文版本:v1.0 最后修改:2009.01.21 转载请注明原文链接: http://blog.s135.com/post/394/]\nkey-value分布式存储系统查询速度快、存放数据量大、支持高并发,非常适合通过主键进行查询,但不能进行复杂的条件查询。如果辅以Real- Time Search Engine(实时搜索引擎)进行复杂条件检索、全文检索,就可以替代并发性能较低的MySQL等关系型数据库,达到高并发、高性能,节省几十倍服务器数 量的目的。以MemcacheDB、Tokyo Tyrant为代表的key-value分布式存储,在上万并发连接下,轻松地完成高速查询。而MySQL,在几百个并发连接下,就基本上崩溃了。\n虽然key-value分布式存储具有极高的性能,但是只能做类似于MySQL的SELECT * FROM table WHERE id = 123;简单主键查询。\n“搜索索引引擎+key-value分布式存储”能够实现高并发的复杂条件查询、全文检索与数据显示。但是, 由于索引更新需要时间,目前还不能实现完全意义上的Real-Time …"
April 1, 2010
使用Nginx的proxy_cache缓存功能取代Squid[转载]
"[文章作者:张宴 本文版本:v1.2 最后修改:2009.01.12 转载请注明原文链接: http://blog.s135.com/nginx_cache/]\nNginx从0.7.48版本开始,支持了类似Squid的缓存功能。这个缓存是把URL及相关组合当作Key,用md5编码哈希后保存在硬盘上,所以 它可以支持任意URL链接,同时也支持404/301/302这样的非200状态码。虽然目前官方的Nginx Web缓存服务只能为指定URL或状态码设置过期时间,不支持类似Squid的PURGE指令,手动清除指定缓存页面,但是,通过一个第三方的Nginx 模块,可以清除指定URL的缓存。\nNginx的Web缓存服务主要由proxy_cache相关指令集和fastcgi_cache 相关指令集构成,前者用于反向代理时,对后端内容源服务器进行缓存,后者主要用于对FastCGI的动态程序进行缓存。两者的功能基本上一样。\n最新的Nginx 0.8.32版本,proxy_cache和fastcgi_cache已经比较完善,加上第三方的ngx_cache_purge模块(用于清除指定 URL的缓存), …"
December 10, 2009
重启nginx服务的简单命令
"目前的版本基本上不需要用下面的命令了,直接 nginx -s reload 就可以了。\n用root权限\n#killall nginx\n#nginx\n其它相关命令:\n1.显示nginx进行id #ps -aux | grep nginx\n2.结果nginx的master进行pid #kill -HUP 635\n3.重启ngnix #nginx"
December 10, 2009
nginx虚拟主机及ftp权限应用问题
"平时给一个目录执行一个\n#chown -R blog:ftp /www/blog\n命令,如果再通过ftp上传文件的话,发现文件属性为600,访问的时候总是提示”Access Denies!”,提示权限不够,此时可以在系统里执行一下命令进行解决, #chown -R blog:ftp /wwww/blog\n#chmod -R 777 /www/blog\n命令中的-R选项用来让子目录继承父目录的权限,\n注意:vsftpd.conf 里的local_umask=066(或者是022),\n其中最有效的方法就是将vsftpd.conf配置文件里的local_umask的值修改为000就可以了,本人已经测试无误!\n1,文件权限算法 我们知道系统默认权限炎:\n目录的初始权限是 777 文件的初始权限是 666\n此时上传文件权限计算方法:\n用初始的权限 – 权限umask的权限 = 新建目录或文件的权限\n:新建目录的权限就是777-022=755 , 新建文件的权根就是666-022=644\n2,修改 /etc/vsftpd/vsftpd.conf 文件设置 local_umask=066 (系统默认 …"
December 10, 2009
Nginx下WordPress的永久链接实现
"经过多番测试,终于在nginx下实现了rewrite的功能,WrodPress的永久链接终于生效了。\n其实也是很简单的方法,修改nginx.conf文件,加入以下内容:\n`location / {\nif (-f $request_filename/index.html){\nrewrite (.*) $1/index.html break;\n}\nif (-f $request_filename/index.php){\nrewrite (.*) $1/index.php;\n}\nif (!-f $request_filename){\nrewrite (.*) /index.php;\n}\n}\n`\n重启nginx就可以了。\n#killall nginx\n#nginx"
August 26, 2009
nginx 502 bad gateway 解决办法
"NGINX 502 Bad Gateway错误是FastCGI有问题,造成NGINX 502错误的可能性比较多。将网上找到的一些和502 Bad Gateway错误有关的问题和排查方法列一下,先从FastCGI配置入手:\n1.FastCGI进程是否已经启动\n2.FastCGI worker进程数是否不够 运行 netstat -anpo | grep “php-cgi” | wc -l 判断是否接近FastCGI进程,接近配置文件中设置的数值,表明worker进程数设置太少 通过命令查看服务器上一共开了多少的 php-cgi 进程\nps -fe |grep “php” | grep -v “grep” | wc -l\n使用如下命令查看已经有多少个php-cgi进程用来处理tcp请求\nnetstat -anop | grep “php” | grep -v “grep” | wc -l\n接近配置文件中设置的数值,表明worker进程数设置太少 参见: http://blog.s135.com/post/361.htm\n3.FastCGI …"
June 21, 2009
Nginx常见应用技术-Tips
"目 录\n一、 Nginx 基础知识\n二、 Nginx 安装及调试\n三、 Nginx Rewrite\n四、 Nginx Redirect\n五、 Nginx 目录自动加斜线:\n六、 Nginx Location\n七、 Nginx expires\n八、 Nginx 防盗链\n九、 Nginx 访问控制\n十、 Nginx 日志处理\n十一、 Nginx Cache\n十二、 Nginx 负载均衡\n十三、 Nginx 简单优化\n十四、 如何构建高性能的 LEMP 环境\n十五、 Nginx 服务监控\n十六、 常见问题与错误处理.\n十七、 相关资源下载\n作者:NetSeek\n欢迎转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明.\n首发时间: 2008-11-25\n转帖NetSeek的Nginx Tips 希望对广大Cuer有用!\n附件pdf: Nginx常见应用技术-Tips.pdf"
May 19, 2009
windows下nginx-0.7.10+php-5.2.6+fastcgi安装日志
"最近心里有点痒,打算怀下旧,搞个php玩玩。找了几台服务器想装个php,虽然是举手之劳,但是总觉得有点不方便。另外家里的宽带总被占线,所以在服务器上做测试那也比较痛苦。\n所以就想在本机弄个,记得以前有个apache php mysql的整合安装版,这可是个好东西,如果有人问我怎么在windows装php啊,我顺口就告诉他找这个,的确可以省不少力气。\n不过今天我就不想用这古老的玩意装机了,虽然这东西装得是快,不过我已经不怎么记得起apache的配置怎么写,甚至有点厌恶写那配置。\n于是我下了个nginx的windows版,然后再找个php的windows版,在http://www.kevinworthington.com/category/computers/nginx/,下完后先装nginx,没什么复杂,启动,在浏览器输入http://127.0.0.1,没有反应,看一下netstat -an,发现貌似80端口存在,估计这个端口不是nginx占用的,于是关掉所有开启的程序,再启动,再刷新,就可以看到有一个测试页出现了。\n这样算是弄完了一个东西,接下来装php吧,先把它解压到d盘,放 …"
May 7, 2009
便于管理的nginx配置[2009-03-18 01:15:05]
"我目前的nginx配置是拆散的,这样可以便于在很多个虚拟主机和目录里重用部分配置。\n总体是划分为这样一个结构:\nconf/ conf/nginx.conf conf/proxy.conf conf/rewrite.conf conf/location.conf conf/port.conf conf/upstream.conf conf/servers/ conf/servers/www.sudone.com conf/servers/www.163.com\n1、nginx.conf\n这就是nginx读取的主文件,没特殊情况是通用的\n2、proxy.conf\n代理的选项配置,也是通用的\n3、rewrite.conf\n所有主机的根目录公用的rewrite规则,默认是空文件,可以不使用。\n4、location.conf\n所有主机都会用到的location目录结构,默认是空文件,可以不使用。\n5、port.conf\n配置服务器绑定ip和端口,因为nginx如果各个主机ip端口配置有不同会有bug,所以最好是统一设定。\n6、upstream.conf\nupstream写在这里面,和业务分开,易 …"
May 7, 2009
nginx图片服务器的架构方案[2009-03-18 01:15:06]
"图片服务通常数据容量较大,而且访问也频繁,鉴于此,图片服务就会有两种问题,一是存储问题,二是访问量问题。\n存储问题就是硬盘容量问题,花钱买硬盘就可以了,看似简单,但着实也是最苦的问题。按目前探索来看,最好的方式是:在任何时刻遇到硬盘空间不够时,买颗硬盘插上,最多改改配置,就能立刻利用;另外,硬盘要能充分利用,不然图片存储量大再加上备份,很恐怖,最好是每颗硬盘都用上100%的空间。\n访问量也是个大问题,如果服务不允许防盗链,那么访问量会引起带宽、服务器压力等问题,有钱的话直接扔CDN,没钱或者有更多的钱,就自己做吧。根据垣古不变的真理“越老的图,访问量也相对较少”这一点,分成两大部分,一边处理最新的图片,一边处理老旧的图片。最新的图片访问量大,但存储量较少;老图片访问量低,但存储量大。\n大概分析完了,开始制定方案。\n一、拟定一个存储目录规则:\n在现有的/a/b/abcde.jpg这样的hash方式下多加一个日期的目录变成:/200810/16/a/b/abcde.jpg或者/2008/10/16/a/b/abcde.jpg。按日期制定这个目录规则后,就可以按年月来拆机器了。\n二、分机器, …"
May 7, 2009
图片服务器的hash架构[2009-04-19 23:17:00]
"如图,这是一个最简洁的架构。\n在这个架构里,负载均衡器都可以省了,用最为廉价的dns来替代,dns的优点就是廉价,不用维护,也不愁性能和稳定,还可以跨机房多用几条带宽作分流。另外,在图片服务中,可以选择用另一个域名做dns。优点是主站中的任何cookie等header不会带到图片服务中,省了不少上传流量和服务器可能有的处理时间;缺点是多花了点域名的钱。目前门户都喜欢用这办法,小站用的话,用另一个域名还附带有一个特别的优点:因为部分域名服务商允许添加的二级域名有限,所以用别的域名可以节约有限的域名资源。dns这一块也可以用泛域名,不过貌似国内的泛域名支持不是特别的稳定,有些网站的泛域名,在linux下不能解析windows就正常,比较奇怪,我也没法解释。\n在这个架构里我总共开了36个域名,但是一时没有那么多机器,所以有一些域名指向同一台机器。一般来说,一个刚上线的项目,放一台机也未尝不可,但是链接(包括域名)一定要固定下来,不然以后调整会非常痛苦。\n域名的事情还是比较简单的,只要照着填写web表单就完成了,配置四台nginx服务器当然也是非常简单的,因为不需要什么特殊的功能,所以四台机用 …"
May 7, 2009
新型的大型bbs架构(squid+nginx)[2009-03-18 01:15:06]
"这个架构基于squid、nginx和lvs等技术,从架构上对bbs进行全面优化和保护,有如下特点:\n1、高性能:所有的点击基本上全部由前端缓存负责,提供最快速的处理。\n2、高保障度:不需考虑应用程序稳定与否、程序语言是何种、数据库是何种,都能从架构上保证稳定。\n3、高可用性:对应用程序的修改达到最简化:在程序的某些地方加入清缓存的语句即可,当然还需要做页面静态化的工作和统计工作。\n首先看图,这个图比较大:\n这个架构的特点和一些流程的说明:\n1、主域名和图片域名分离\n域名分离可以使流量分离,缓存策略分离等等,好处诸多。bbs初期一定要做好规划,将图片用另外的域名独立服务,即使没有足够机器,域名也要先分开。另外,图片服务器可以使用有别于主域名的另一个域名,一个好处是可以减少读取cookie对图片服务器的压力,另一个是提高安全性,避免cookie泄露。\n2、使用LVS作为前端、二级代理和数据库的访问入口\n使用LVS作为入口,比其他任何一种方式都来得更优质。首先LVS的负载能力很强,因为它工作在网络协议的第4层,使用虚拟ip技术,所以它本身并不担负任何流量的处理,仅仅是一个封包转发的功能;第 …"
May 7, 2009
Nginx 简单的负载均衡配置示例
"www.haohtml.com 和 blog.haohtml.com 域名均指向 Nginx 所在的服务器IP。\n用户访问,将其负载均衡到192.168.1.2:80、192.168.1.3:80、192.168.1.4:80、192.168.1.5:80四台服务器。\n用户访问,将其负载均衡到192.168.1.7服务器的8080、8081、8082端口。\n以下为配置文件nginx.conf: 引用 user www www;\nworker_processes 10;\n#error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;\n#pid logs/nginx.pid;\n#最大文件描述符 worker_rlimit_nofile 51200;\nevents { use epoll;\nworker_connections 51200; }\nhttp { include conf/mime.types; default_type …"
May 7, 2009
服务器的大用户量的承载方案 Nginx Squid Apache PHP MySQL
"一、前言\n二、编译安装\n三、 安装MySQL、memcache\n四、 安装Apache、PHP、eAccelerator、php-memcache\n五、 安装Squid\n六、后记\n一、前言,准备工作\n当前,LAMP开发模式是WEB开发的首选,如何搭建一个高效、可靠、稳定的WEB服务器一直是个热门主题,本文就是这个主题的一次尝试。\n我们采用的架构图如下:\n引用\n——– ———- ————- ——— ————\n| 客户端 | ===\u0026gt; |负载均衡器| ===\u0026gt; |反向代理/缓存| ===\u0026gt; |WEB服务器| ===\u0026gt; |数据库服务器|\n——– ———- ————- ——— ————\nNginx Squid Apache,PHP MySQL\neAccelerator/memcache\n准备工作:\n引用\n服务器: Intel(R) Xeon(TM) CPU 3.00GHz * 2, 2GB mem, SCISC 硬盘\n操作系统:CentOs4.4,内核版本2.6.9-22.ELsmp,gcc版本3.4.4\n软件:\nApache 2.2.3(能使用MPM模式)\nPHP …"
March 28, 2009
FreeBSD 7.0 安装Nginx
"来源: http://bbs.chinaunix.net/viewthread.php?tid=1039563\u0026amp;extra=\u0026amp;page=1\n#/usr/ports/www/nginx\n#make config\nlqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk\nx Options for nginx 0.5.34 x\nx lqqqqq^(-)qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk x\nx x [X] HTTP_ADDITION_MODULE Enable http_addition module x x\nx x [X] HTTP_DAV_MODULE Enable http_webdav module x x\nx x [X] HTTP_FLV_MODULE Enable http_flv module x x\nx x [X] HTTP_PERL_MODULE Enable http_perl module x …"
March 28, 2009
[教程]FreeBSD下nginx+fast-cgi+mysql+zend的实现(php-fpm和spawn-fcgi)
"另一篇文章是用php-fpm方式安装的,用的人也比较的多,推荐使用,这里介绍的是用fastcgi方式安装的.\n首先在安装所有软件之前新系统ports,然后 再进行下面的工作\n1)安装mysql**#cd /usr/ports/databases/mysql51-server**\n**#make WITH_CHARSET=gbk WITH_XCHARSET=all ** WITH_PROC_SCOPE_PTH=yes SKIP_DNS_CHECK=yes BUILD_OPTIMIZED=yes install clean //(utf8我选择了这个,情况自己定)\n#cp /usr/local/share/mysql/my-medium.cnf /etc/my.cnf #rehash !!!—–WITH_CHARSET=utf8(我选择了这个,情况自己定,可以使用gbk) # mysql_install_db ##初始化mysql,如果在命令行后面添加上 –user=mysql 的话,会失败,不清楚什么原因\n#chown -R mysql:mysql /var/db/mysql ##目录权 …"
March 16, 2009
FreeBSD+Nginx+Mysql+PHP安装记
"折腾了一个晚上,基本上都是用packages安装,php用ports安装,由于PHP只用了FastCGI模式,所以phpmyadmin提示缺少模块而无法安装,最后下载的源码安装。整个过程中,竟然发现最耗费时间的PHP的那些模块! 其实安装完成后再回过头来看,步骤熟练后,加上编译时间,半个小时足够!\n先做个规划,操作步骤分三块,分别用三个帖子来写,分别是:软件的安装,软件的设置,启动调试及遇到错误说明。\n主要思路:用php-fpm来管理FastCGI。在网上的大多数资料都是用lighttp来安装管理,但是据说php-fpm比那个要强,所以就赶了一回时髦,用了一下php-fpm。\n先列一下安装的东西,其实由安装的软件列表,就可以看出用做的过程,今天晚了,明天写步骤: QUOTE: autoconf-2.62 Automatically configure source code on many Un*x platforms autoconf-wrapper-20071109 Wrapper script for GNU autoconf e2fsprogs-libuuid-1.41.3_1 …"
March 16, 2009
nginx支持泛域名解析的方法
"要使用Nginx下的泛域名支持,必须在编译 Nginx的时候加上\n–with-http_sub_module\nfreebsd下ports安装的时候有提示的,选上即可。方法我google了半天,网上的好多我照做都是不行的,例如这个:\nlisten 80;\nserver_name www.yourdomain.com *.yourdomain.com;\n这个会提示:\nnginx -t 2009/01/04 13:22:56 [emerg] 63944#0: conflicting parameter “*.bsdlover.cn” in www.conf:14\n2009/01/04 13:22:56 [emerg] 63944#0: the configuration file nginx.conf test failed\n还有些文章里面说的是:\nserver_name .yourdomain.com;\n这个也是不行的,经过我的实验,正确的做法是:\nlisten 80;\nserver_name _;\n这样就可以了,留个笔记,呵呵\n来 …"
March 16, 2009
Apache和Nginx下禁止访问*.txt文件
"大家是否测试Apache做了目录禁止浏览后,目录下面的txt文件还是可以显示里面的内容的。(我的是这样的)\n例如: http://www.domain.com/test/ 此访问会报403错误,但是如果test下有很多txt,你访问该txt时;\n例如: http://www.domain.com/test/a.txt,此时a.txt里的内容会全部暴露在外面了(有时这个txt是很机密的文件),这样以来问题就来了。\n同样:我在Nginx配置后后也存在这样的问题,Apache下此问题的解决多谢NetSeek帮助。\n如下是关于Apache和Nginx 限制该类事情办法:\nApache:解决办法;\nOptions -Indexes FollowSymLinks AllowOverride All Order allow,deny Deny from all Nginx:解决办法; location ~* .(txt|doc)$ { if (-f $request_filename) { root /home/domain/public_html/test; break; } } Nginx下请大 …"
March 16, 2009
freebsd+mysql+nginx+php组合安装
"安装mysql #cd/usr/ports/databases/mysql51-server #make WITH_CHARSET=gbk WITH_XCHARSET=all WITH_PROC_SCOPE_PTH=yes BUILD_OPTIMIZED=yes BUILD_STATIC=yes SKIP_DNS_CHECK=yes WITHOUT_INNODB=yes install clean #cp /usr/local/share/mysql/my-small.cnf /etc/my.cnf #rehash\n初始化表 #/usr/local/bin/mysql_install_db –user=mysql#一定要运行此步,否将下面设定权限将会出现错误,因为这句命令会将生在/usr/local/mysql下面将生var及以下目录,是下面的前提条件.\n安装php # cd /usr/ports/lang/php5 # make config [X] CLI Build CLI version [X] CGI Build CGI version [ ] APACHE Build …"