- 浏览: 183457 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
行动与思考:
你好!请问GraphicString这个类型是什么类型呀?怎么 ...
ACSE-1 (osi 8650-1)abstract syntax -
gaozon:
楼主,你好,请问用lua能编写这样一种插件吗:我想更改网络层i ...
编程语言 Lua -
langzhe:
percept:profile("test.dat& ...
erlang r12 新增加Percept并发性能调测模块 -
mryufeng:
解释epmd等2进制协议是erlang的拿手呀
Use Erlang NIF to snoop, capture packets(in Windows XP), in OTP-R13B04 -
xumingyong:
GeoffCant在git clone git://git.e ...
Use Erlang NIF to snoop, capture packets(in Windows XP), in OTP-R13B04
Nginx介绍
Nginx发音为[engine x],是由俄罗斯人Igor Sysoev建立的项目,基于BSD许可。是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。
据说他当初是F5的成员之一,英文主页:http://nginx.net
。俄罗斯的一些大网站已经使用它超过两年多了, 一直表现不凡,相信想了解nginx的朋友都读过阿叶大哥的利用nginx实现负载均衡的文章。
目前中国大陆使用Nginx网站用户有:新浪
、网易
、腾讯
。
一.PHP(Fastcgi)编译安装
[root@att php-5.2.4]# cat in.sh
- ./configure \
- --prefix=/usr/local/php-fcgi \
- --enable-fastcgi \
- --enable-discard-path \
- --enable-force-cgi-redirect \
- --with-config-file-path=/usr/local/php-fcgi/etc \
- --enable-zend-multibyte \
- --with-mysql=/usr/local/mysql \
- --with-libxml-dir=/usr/local/libxml2 \
- --with-gd=/usr/local/gd2 \
- --with-jpeg-dir \
- --with-png-dir \
- --with-bz2 \
- --with-freetype-dir \
- --with-iconv-dir \
- --with-zlib-dir \
- --with-openssl=/usr/local/openssl \
- --with-mcrypt=/usr/local/libmcrypt \
- --enable-sysvsem \
- --enable-inline-optimization \
- --enable-soap \
- --enable-gd-native-ttf \
- --enable-ftp \
- --enable-mbstring \
- --enable-exif \
- --disable-debug \
- --disable-ipv6
-
- make
- make install
- cp php.ini-dist /usr/local/php-fcgi/etc/php.ini
二.Nginx编译安装
1.创建nginx运行用户和虚拟主机目录
- groupadd www -g 48
- useradd -u 48 -g www www
- mkdir -p /data/www/wwwroot
- chown -R www:www /data/www/wwwroot
2.安装lighttpd中附带的spawn-fcgi,用来启动php-cgi
先编译安装lighttpd产生spawn-fcgi二进制文件.
- cd /usr/local/src/lighttpd-1.4.18
- cp src/spawn-fcgi /usr/local/php-fcgi/bin/
启动php-cgi进程,监听127.0.0.1的8085端口,进程数为250(如果服务器内存小于3GB,可以只开启25个进程),用户为www:
/usr/local/php-fcgi/bin/spawn-fcgi -a 127.0.0.1 -p 8085 -C 250 -u www -f /usr/local/php-fcgi/bin/php-cgi
3.nginx的安装与配置
安装Nginx所需的pcre库:
http://ftp.dk.debian.org/exim/pcre/pcre-7.3.tar.gz
- tar zxvf pcre-7.2.tar.gz
- cd pcre-7.2/
- ./configure
- make && make install
- cd ../
- http://sysoev.ru/nginx/nginx-0.5.32.tar.gz
- tar zxvf nginx-0.5.32.tar.gz
- cd nginx-0.5.32
- ./configure --user=www --group=www --prefix=/usr/local/nginx/ --with-http_stub_status_module --with-
- openssl=/usr/local/openssl
- make && make install
三.Nginx主配置文件及PHP支持.
1.nginx.conf 主配置文件的配置
#cd /usr/local/nginx/conf/
#cp nginx.conf nginx.conf.cao
#cat /dev/null > nginx.conf
#vi nginx.conf //主配置文件
- user www www;
-
- worker_processes 10;
-
- #error_log logs/error.log;
- #error_log logs/error.log notice;
- #error_log logs/error.log info;
-
- pid /var/run/nginx.pid;
-
- #Specifies the value for maximum file descriptors that can be opened by this process.
- worker_rlimit_nofile 51200;
-
- events
- {
- use epoll;
-
- #maxclient = worker_processes * worker_connections / cpu_number
- worker_connections 51200;
- }
-
- http
- {
- include conf/mime.types;
- 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 /data/www/logs/access.log main;
- #sendfile on;
- tcp_nopush on;
- tcp_nodelay off;
-
- keepalive_timeout 60;
-
- client_header_timeout 3m;
- client_body_timeout 3m;
- send_timeout 3m;
- connection_pool_size 256;
- client_header_buffer_size 1k;
- large_client_header_buffers 4 2k;
- request_pool_size 4k;
- output_buffers 4 32k;
- postpone_output 1460;
- client_max_body_size 10m;
- client_body_buffer_size 256k;
- client_body_temp_path /dev/shm/client_body_temp;
- proxy_temp_path /usr/local/nginx/proxy_temp;
- fastcgi_temp_path /usr/local/nginx/fastcgi_temp;
-
- #gzip
- gzip on;
- gzip_http_version 1.0;
- gzip_comp_level 2;
- gzip_proxied any;
- gzip_types text/plain text/html text/css
application/x-javascript text/xml application/xml application/xml+rss
text/javascript;
- gzip_min_length 1100;
- gzip_buffers 4 8k;
-
- # The following includes are specified for virtual hosts //以下是加载虚拟主机配置.
- #[url]www.redocn.com[/url]
- include conf/vhosts/www_redocn_com.conf;
- #bbs.redocn.com
- include conf/vhosts/bbs_redocn_com.conf;
- #blog.redocn.com
- include conf/vhosts/blog_redocn_com.conf;
- #down.redocn.com
- include conf/vhosts/down_redocn_com.conf;
- }
2.配置支持Fastcgi模式的PHP
[root@redocn conf]# cat enable_php5.conf
- fastcgi_pass 127.0.0.1:8085;
- fastcgi_index index.php;
-
- fastcgi_param GATEWAY_INTERFACE CGI/1.1;
- fastcgi_param SERVER_SOFTWARE nginx;
- #new ac upload
- #fastcgi_pass_request_body off;
- #client_body_in_file_only clean;
- #fastcgi_param REQUEST_BODY_FILE $request_body_file;
- #
-
- fastcgi_param QUERY_STRING $query_string;
- fastcgi_param REQUEST_METHOD $request_method;
- fastcgi_param CONTENT_TYPE $content_type;
- fastcgi_param CONTENT_LENGTH $content_length;
-
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- fastcgi_param SCRIPT_NAME $fastcgi_script_name;
- fastcgi_param REQUEST_URI $request_uri;
- fastcgi_param DOCUMENT_URI $document_uri;
- fastcgi_param DOCUMENT_ROOT $document_root;
- fastcgi_param SERVER_PROTOCOL $server_protocol;
-
- fastcgi_param REMOTE_ADDR $remote_addr;
- fastcgi_param REMOTE_PORT $remote_port;
- fastcgi_param SERVER_ADDR $server_addr;
- fastcgi_param SERVER_PORT $server_port;
- fastcgi_param SERVER_NAME $server_name;
-
- # PHP only, required if PHP was built with --enable-force-cgi-redirect
- fastcgi_param REDIRECT_STATUS 200;
四,多虚拟主机应用配置案例.
#mkdir /usr/local/nginx/conf/vhosts //建立虚拟主机配置存放目录.
1.www.redocn.com
//首站配置
[root@redocn vhosts]#vi www_redocn_com.conf
- server
- {
- listen 80;
- server_name www.redocn.com;
- index index.html index.htm index.php;
- root /data/www/wwwroot;
- error_page 404 http://bbs.redocn.com;
- rewrite ^/bbs/(.*) http://bbs.redocn.com/$1;
- location ~ .*\.php?$
- {
- include conf/enable_php5.conf;
- }
- }
注: 关于rewite需求,红动中国希望当用户访问http://www.redocn.com/bbs
的时候自动转至http://bbs.redocn.com
在原apache中利用redirect实现
Redirect /bbs http://bbs.redocn.com
本文中在nginx下利用rewrite实现:
rewrite ^/bbs/(.*) http://bbs.redocn.com/
$1;
2.[root@redocn vhosts] vi bbs_redocn_com.conf
- server
- {
- listen 80;
- server_name bbs.redocn.com yan.redocn.com majia.redocn.com wt.redocn.com;
- index index.html index.htm index.php;
- root /home/www/htdocs/bbs;
- access_log /var/log/nginx/access_bbs.redocn.com.log combined;
- location / {
- #bbs rewrite
- rewrite ^/archiver/((fid|tid)-[\w\-]+\.html)$ /archiver/index.php?$1 last;
- rewrite ^/forum-([0-9]+)-([0-9]+)\.html$ /forumdisplay.php?fid=$1&page=$2 last;
- rewrite
^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /viewthread.php?tid=$1&extra=page\%3D$3&page=$2
last;
- rewrite ^/space-(username|uid)-(.+)\.html$ /space.php?$1=$2 last;
- rewrite ^/tag-(.+)\.html$ /tag.php?name=$1 last;
- break;
- #error
- error_page 404 /index.php;
- #redirect server error pages to the static page /50x.html
- error_page 500 502 503 504 /50x.html;
- location = /50x.html {
- root html;
- }
- }
- #Preventing hot linking of images and other file types
- location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip)$ {
- valid_referers none blocked server_names
- *.redocn.com redocn.com *.taobao.com taobao.com
- bbs.blueidea.com bbs.asiaci.com bbs.arting365.com forum.chinavisual.com softbbs.pconline.com.cn
- bbs.chinaddu.com bbs.photops.com *.baidu.com *.google.com *.google.cn *.soso.com *.yahoo.com.cn
- *.yahoo.cn;
- if ($invalid_referer) {
- rewrite ^/ http://www.redocn.com/images/redocn.gif;
- #return 403;
- }
- }
-
- #support php
- location ~ .*\.php?$
- {
- include conf/enable_php5.conf;
- }
-
- }
注:
1.红动中国采用高性能的Discuz!论坛,原apache的rewrite规则几乎不要做什么修改即可全部移植到nginx下.
静态化配置见面上面的:#bbs rewrite部分.
2.一般论坛都希望实现防盗链功能,在apache很轻松实现?在nginx下是否容易实现呢?答案是肯定的.
- #Preventing hot linking of images and other file types
- valid_referers none blocked server_names *.redocn.com redocn.com ...你允许连接的网址;
- if ($invalid_referer) {
- rewrite ^/ http://www.redocn.com/images/redocn.gif; //让别人盗链时显示你指定的图片.
- #return 403;
- }
3.blog.redocn.com
[root@redocn vhosts]#vi blog_redocn_com.conf
- server
- {
- listen 80;
- server_name blog.redocn.com;
- index index.html index.htm index.php;
- root /data/www/wwwroot/blog;
- error_page 404 http://bbs.redocn.com;
- #supsite rewrite
- rewrite ^([0-9]+)/spacelist(.*)$ index.php?$1/action_spacelist$2;
- rewrite ^([0-9]+)/viewspace_(.+)$ index.php?$1/action_viewspace_itemid_$2;
- rewrite ^([0-9]+)/viewbbs_(.+)$ index.php?$1/action_viewbbs_tid_$2;
- rewrite ^([0-9]+)/(.*)$ index.php?$1/$2;
- rewrite ^([0-9]+)$ index.php?$1;
- rewrite ^action_(.+)$ index.php?action_$1;
- rewrite ^category_(.+)$ index.php?action_category_catid_$1;
- rewrite ^itemlist_(.+)$ index.php?action_itemlist_catid_$1;
- rewrite ^viewnews_(.+)$ index.php?action_viewnews_itemid_$1;
- rewrite ^viewthread_(.+)$ index.php?action_viewthread_tid_$1;
- rewrite ^index([\.a-zA-Z0-9]*)$ index.php;
- rewrite ^html/([0-9]+)/viewnews_itemid_([0-9]+)\.html$ index.php?action_viewnews_itemid_$2;
-
-
- rewrite ^/([0-9]+)/spacelist(.+)$ /index.php?uid/$1/action/spacelist/type$2;
- rewrite ^/([0-9]+)/viewspace(.+)$ /index.php?uid/$1/action/viewspace/itemid$2;
- rewrite ^/([0-9]+)/viewbbs(.+)$ /index.php?uid/$1/action/viewbbs/tid$2;
- rewrite ^/([0-9]+)/(.*)$ /index.php?uid/$1/$2;
- rewrite ^/([0-9]+)$ /index.php?uid/$1;
-
- rewrite ^/action(.+)$ /index.php?action$1;
- rewrite ^/category(.+)$ /index.php?action/category/catid$1;
- rewrite ^/viewnews(.+)$ /index.php?action/viewnews/itemid$1;
- rewrite ^/viewthread(.+)$ /index.php?action/viewthread/tid$1;
- rewrite ^/mygroup(.+)$ /index.php?action/mygroup/gid$1;
-
- location ~ .*\.php?$
- {
- include conf/enable_php5.conf;
- }
- }
注:blog采用功能强大的Supesite作为Blog站点: http://www.supesite.com/
1.Blog如何在Nginx里实现静态化,具体设置见,上面的#supesite rewrite
4.down.redocn.com
[root@redocn vhosts]# vi down_redocn_com.conf
- limit_zone one $binary_remote_addr 10m;
- server
- {
- listen 80;
- server_name down.redocn.com;
- index index.html index.htm index.php;
- root /data/www/wwwroot/down;
- error_page 404 /index.php;
- # redirect server error pages to the static page /50x.html
- error_page 500 502 503 504 /50x.html;
- location = /50x.html {
- root html;
- }
- #Zone limit
- location / {
- limit_conn one 1;
- limit_rate 20k;
- }
-
-
- # serve static files
- location ~ ^/(images|javascript|js|css|flash|media|static)/ {
- root /data/www/wwwroot/down;
- expires 30d;
- }
- }
注:
由于现在的BT下载软件越来越多了,我们如何限制下载的并发数和速率呢?apache需要三方模块,nginx就不用了
在nginx利用两个指令即可实现:limit_zone(limit_conn) 来限制并发数,limit_rate来限制下载的速率,请看上面的配置实例.
5.启动nginx服务
- /usr/local/php-fcgi/bin/spawn-fcgi -a 127.0.0.1 -p 8085 -C 250 -u www -f/usr/local/php-fcgi/bin/php-cgi
- /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
你可以把上面两条命令制做成系统启动服务脚本,相关的脚本在网上也很多,本文就不再贴出来了
,给出一个实例链接:
http://topfunky.net/svn/shovel/nginx/init.d/nginx
五.问题及经验总结:
1.安装Discuz论坛后,无法上传大于M以上的附件?
在主配置文件里加入:client_max_body_size 10m; 详细指令说明请参见(六)提供的Wiki链接.
2.Discuz附件无法下载附件?
最近遇到一个奇怪的问题在nginx下discuz论坛无法下载附件,后来打开error_log才知道,仍后一看/usr/local分区满了,
清了一大堆无用文件后,马上就正常了.
以上是本人迁移和测试过程中遇到的两个小问题,在此附上说明,只是希望配置nginx的朋友不要犯我一样的问题.
欢迎联系NetSeek(狂热linux爱好者^_^ msn:cnseek@msn.com QQ:67888954 Gtalk:cnseek@gmail.com).
六.相关链接:
1.Discuz!.net高性能的PHP论坛程序 http://www.discuz.net
Supesite: http://www.supesite.com/
2.Nginx参考文档:http://wiki.codemongers.com/
3.利用Nginx实现负载均衡(阿叶大哥的文章):http://www.imysql.com/comment/reply/210
4.linuxPk[Linux宝库]:http://bbs.linuxpk.com
5.红动中国 http://bbs.redocn.com
发表评论
-
用 Twisted Matrix 框架来进行网络编程
2009-04-11 23:42 1269http://www.ibm.com/developerwor ... -
用python进行GUI开发的选择
2009-04-11 16:56 2041Python最大的特点就在于她的快速开发功能。作为一种胶水型语 ... -
Django进阶
2009-04-11 01:43 856进入 -
初识django, 一起进入python的世界吧
2009-04-11 01:38 875进入 -
关于Bluefish
2009-04-11 01:31 852Bluefish标榜其自身是“一款为熟练的Web设计员和程序员 ... -
各种脚本语言发展趋势
2009-04-11 01:09 1225php python ... -
关于HTML
2009-04-11 00:52 983发展历史 1982 年,Tim Berners-Lee ... -
关于FastCGI
2009-04-11 00:48 1345FastCGI的技术原理 如果想了解FastCGI的技术原理 ... -
使用 Django 和 Python 开发 Web 站点
2009-04-11 00:44 1657转自http://www.ibm.com/developerw ...
相关推荐
**Nginx Web服务器代码详解** Nginx是一款高性能、轻量级的Web服务器和反向代理服务器,因其高效的并发处理能力和低内存占用而受到广泛关注。它的设计目标是实现高并发、低延迟以及稳定性,因此在大型网站和互联网...
Ubuntu 下安装 Nginx Web 服务器 Nginx 是一个流行的开源 Web 服务器软件,可以运行在多种操作系统上,包括 Ubuntu。本文将手把手指导您在 Ubuntu 下安装 Nginx Web 服务器,包括安装前提、Nginx 源码下载、目录...
Nginx 高性能web服务器详解、包括安装、配置、Linux内核优化、Nginx的相关优化等
**Nginx Web服务器详解** Nginx是一款高性能、轻量级的Web服务器及反向代理服务器,由Igor Sysoev开发,以其高效的非阻塞I/O模型、优秀的负载均衡能力和丰富的模块扩展性而备受青睐。在"nginx web服务器最新代码"中...
决战Nginx操作手册,手把手教你搭建Nginx web服务器,非常适合新手。
Linux 搭建 Nginx WEB 服务器的教程 Linux 搭建 Nginx WEB 服务器需要完成以下步骤: 1. 下载 Nginx 源代码:使用命令 `wget http://nginx.org/download/nginx-0.8.54.tar.gz` 下载 Nginx 的源代码。 2. 解压 ...
nginx Web服务器应用及详细配置,Web性能非常好,比ahache强好几倍
"Nginx Web服务器安全配置指南" 本文将指导您如何配置 Nginx Web 服务器以提高安全性。Nginx 是一个轻量级的、 高性能的 Web 服务器和反向代理服务器,运行在 UNIX、GNU/Linux、BSD 各种版本、Mac OS X、Solaris 和...
nginxWeb服务器,原始优化实验数据,只测nginx 问题:-------- memecached的存取速度快,但tcp连接的时间消耗就成为主要因素. 如果还有现高的要求-->memcached连接池,模仿java的数据库连接池. 这对于PHP运行特点,...
标题中的“使用NGINX Web服务器和Kubernetes(部署和服务)的基本头盔图表”表明,这个压缩包包含的教程将介绍如何在Kubernetes集群中利用Helm(一个流行的包管理工具,常称为“Kubernetes的包管理器”)来部署和...
在网络安全日益重要的今天,隐藏服务器信息,特别是像Nginx这样的Web服务器的版本号,是一项基本的安全措施。这是因为,公开的版本信息可能会暴露服务器的弱点,让潜在的攻击者了解其可能存在的漏洞,从而有针对性地...
nginx 结构图,这是淘宝的一个技术牛人做的,很不错,学习。
《Nginx高性能Web服务器详解》全面介绍了当前Internet上流行的一款开放源代码的Web服务器——Nginx。全书一共分为四大部分,分别从入门、功能、实现和应用等四个方面对Nginx服务器的知识进行完整阐述,从而满足广大...
本文档指导您如何在 RHEL 8 环境中搭建 Nginx Web 服务,包括环境准备、停止 httpd 服务、安装 Nginx、启动 Nginx 服务、配置防火墙、配置 SELinux、查看服务器状态、访问 Nginx Web 服务器和查看 Nginx 软件包文件...
**Nginx Web服务器详解** Nginx是一个高性能、轻量级的Web服务器,由俄罗斯的Igor Sysoev开发,其设计目标是解决高并发访问的问题,因此在处理静态资源和反向代理方面表现出色。Nginx以其高效的性能、稳定的运行和...
实战Nginx 高性能web服务器 在现代的网络服务架构中,Web服务器是核心组件之一,负责响应客户端请求,提供网页内容。在众多Web服务器中,Nginx已经成为了高性能、高可靠性的代名词,它不仅能够处理静态内容,还能...
Nginx是一款广泛应用的开源Web服务器,以其高性能、轻量级和反向代理能力而著名。本教程将详细介绍如何在Linux和Windows操作系统上使用Nginx搭建Web服务器,并在Windows环境下设置Nginx服务为开机自动启动。 首先,...