Nginxserver之Nginx作为反向代理服务器

一:Nginx介绍

成都创新互联公司服务项目包括新巴尔虎左网站建设、新巴尔虎左网站制作、新巴尔虎左网页制作以及新巴尔虎左网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,新巴尔虎左网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到新巴尔虎左省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

1.Nginx简介:nginx [engine x]是一个俄罗斯人编写的HTTP和反向代理服务器,另外它也可以作为邮件代理服务器。 它已经在众多流量很大的俄罗斯网站上使用了很长时间,这些网站包括Yandex、Mail.Ru、VKontakte,以及Rambler。据Netcraft统计,在2012年8月份,世界上最繁忙的网站中有11.48%使用Nginx作为其服务器或者代理服务器。部分成功案例请见: Netflix, Wordpress.com, FastMail.FM。

2.整体采用模块化设计是nginx的一个重大特点,甚至http服务器核心功能也是一个模块。要注意的是:nginx的模块是静态的,添加和删除模块都要对nginx进行重新编译,这一点与Apache的动态模块完全不同。

3.Nginx作为负载均衡服务器: Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务, 也可以支持作为 HTTP代理 服务器对外进行服务. Nginx采用C进行编写, 不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多. 。Nginx可作为7层负载均衡服务器来使用。

4.Nginx与PHP集成:自PHP-5.3.3起,PHP-FPM加入到了PHP核心,编译时加上--enable-fpm即可提供支持。 PHP-FPM以守护进程在后台运行,Nginx响应请求后,自行处理静态请求,PHP请求则经过fastcgi_pass交由PHP-FPM处理,处理完毕后返回。 Nginx和PHP-FPM的组合,是一种稳定、高效的PHP运行方式,效率要比传统的Apache和mod_php高出不少。

基本的HTTP服务器特性

处理静态文件,索引文件以及自动索引;打开文件描述符缓存;

使用缓存加速反向代理;简单负载均衡以及容错;

远程FastCGI,uwsgi,SCGI,和memcached服务的缓存加速支持;简单的负载均衡以及容错;

模块化的架构。过滤器包括gzip压缩、ranges支持、chunked响应、XSLT,SSI以及图像缩放。在SSI 过滤器中,一个包含多个SSI的页面,如果经由FastCGI或反向代理处理,可被并行处理;

支持SSL,TLS SNI。

其他的HTTP服务器特性

基于名字和IP的虚拟主机;

Keep-alive和pipelined连接支持;

灵活的配置;

重新加载配置以及在线升级时,不需要中断正在处理的请求;

自定义访问日志格式,带缓存的日志写操作以及快速日志轮转;

3xx-5xx错误代码重定向;

重写(rewrite)模块:使用正则表达式改变URI;

根据客户端地址执行不同的功能;

基于客户端IP地址和HTTP基本认证机制的访问控制;

支持验证HTTP referer;

支持PUT、DELETE、MKCOL、COPY以及MOVE方法;

支持FLV流和MP4流;

速度限制;

来自同一地址的同时连接数或请求数限制;

嵌入Perl语言。

邮件代理服务器特性

使用外部HTTP认证服务器重定向用户到IMAP/POP3后端;

使用外部HTTP认证服务器认证用户后重定向连接到内部SMTP后端;

支持的认证方式:

POP3: USER/PASS, APOP, AUTH LOGIN/PLAIN/CRAM-MD5;

IMAP: LOGIN, AUTH LOGIN/PLAIN/CRAM-MD5;

SMTP: AUTH LOGIN/PLAIN/CRAM-MD5;

SSL支持;

STARTTLS和STLS支持。

二:具体配置步骤

//环境说明

1.系统为centos6.4

2.nginx编译安装在IP:10.10.54.157上,并配合其它几台web服务器实现负载均衡

3.nginx服务器即当作一台反向代理服务器,又当作一台web服务器和其它几台web服务器配合实现负载均衡

4.web服务器可以是apache,要实现负载均衡,先得保证每台web服务器可以独立被访问

5.环境中有不止一台web服务器,nginx服务器的功能就是把用户的连接请求均衡负载到每台web服务器上

//nginx编译安装

shell>./configure--prefix=/usr/local/nginx--user=apache--group=apache--with-http_ssl_module--with-http_stub_status_module--with-http_gzip_static_module&&make&&makeinstall #参数解释 --prefix=PATHsetinstallationprefix --user=USERsetnon-privilegeduserfor --group=GROUPsetnon-privilegedgroupfor --with-http_ssl_moduleenablengx_http_ssl_module --with-http_stub_status_moduleenablengx_http_stub_status_module#支持监控 --with-http_gzip_static_moduleenablengx_http_gzip_static_module#支持压缩 #启动nginx shell>/usr/local/nginx/sbin/nginx-c/usr/local/nginx/conf/nginx.conf #测试nginx配置文件格式是否正确 shell>/usr/local/nginx/sbin/nginx-t-c/usr/local/nginx/conf/nginx.conf #关闭nginx shell>cat/usr/local/nginx/logs/nginx.pid|xargskill-TERM #重启nginx shell>cat/usr/local/nginx/logs/nginx.pid|xargskill-HUP HUP重启 TERM,INT快速停止 USR1重新打开日志文件,用于日志切割 USR2平滑升级可执行程序 QUIT从容关闭 WINCH从容关闭工作进程

//nginx服务器配置

#编辑nginx主配置文件 shell>vim/usr/local/nginx/conf/nginx.conf userapacheapache; worker_processes2; error_loglogs/error.log; #error_loglogs/error.lognotice; #error_loglogs/error.loginfo; pidlogs/nginx.pid; events{ worker_connections1024; } http{ includemime.types; default_typeapplication/octet-stream; log_formatmain\'$remote_addr-$remote_user[$time_local]"$request"\' \'$status$body_bytes_sent"$http_referer"\' \'"$http_user_agent""$http_x_forwarded_for"\'; access_loglogs/access.logmain; sendfileon; tcp_nopushon; #keepalive_timeout0; keepalive_timeout65; gzipon; includevirtual/www_zijian_com_conf;#包含虚拟主机文件目录 } #编辑虚拟配置文件 shell>mkdir/usr/local/nginx/conf/virtual shell>cd/usr/local/nginx/conf/virtual shell>vimwww_zijian_com_conf -------------------------------------------- upstreamwww_zijian_com{ server10.10.54.157:8080max_fails=3weight=2fail_timeout=60s;#本机也充当一台web服务器 server10.10.54.159:10081max_fails=3weight=1fail_timeout=60s;#10.10.54.159这个web服务器上的10081端口正在监听状态 server10.10.54.152:10080max_fails=3weight=3fail_timeout=60s; server10.10.54.150:1500max_fails=3weight=4fail_timeout=60s; } #nginx服务器在www.zijian.com:80(下面的配置中)端口监听来自客户端的连接,然后通过反向代理,由upstream部分决定吧用户的请求负载到哪台web服务器上,weight=number参数可以指定某台web服务器的权重 server{ listen80; server_namewww.zijian.com;#nginx服务器访问地址,浏览器中输入的是这个网址 charsetuft-8; access_loglogs/www.access.logmain; indexindex.html; location/{ proxy_passhttp://www_zijian_com; proxy_set_headerHOST$host; proxy_set_headerX-Real-IP$remote_addr; proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for; } } #nginx服务器本身也充当web服务器,所以这里也要配置 server{ listen8080; server_namewww.zijian.com; charsetuft-8; access_loglogs/www.access.logmain; root/var/www/html; indexindex.html; } -------------------------------------------- #浏览器中输入www.zijian.com测试nginx负载均衡 #注意:浏览器的缓存会干扰测试结果,所以你要确保www.ziji被正确解析为nginx服务器的IP,这个例子中是10.10.54.15 #虚拟配置文件另一中形式 ----------------------------------------------------------------------- upstreamwww_zijian_com{ server10.10.54.159:10081max_fails=3weight=1fail_timeout=60s;#仅有三台webserver负载 server10.10.54.157:8080max_fails=3weight=2fail_timeout=60s;#本机web服务器 server10.10.54.152:10080max_fails=3weight=3fail_timeout=60s; } server{ listen80; server_namewww.zijian.com; charsetuft-8; access_loglogs/www.access_nginx.logmain; indexindex.html; location/{ proxy_passhttp://www_zijian_com; proxy_set_headerHOST$host; proxy_set_headerX-Real-IP$remote_addr; proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for; } } #不同与上一个配置文件,当upstream把用户请求负载到10.10.54.157:8080上时,再一次启动代理,代理到10.10.54.150:1500端口 server{ listen8080;#监听8080端口 access_loglogs/www.access_nginx.logmain; location/{ proxy_passhttp://10.10.54.150:1500; } } ----------------------------------------------------------------------------------


当前文章:Nginxserver之Nginx作为反向代理服务器
文章网址:http://pwwzsj.com/article/cjspps.html