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

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

一: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 && make install
#参数解释
--prefix=PATH                     set installation prefix
--user=USER                       set non-privileged user for
--group=GROUP                     set non-privileged group for
--with-http_ssl_module            enable ngx_http_ssl_module
--with-http_stub_status_module    enable ngx_http_stub_status_module   #支持监控
--with-http_gzip_static_module    enable ngx_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 | xargs kill -TERM
#重启nginx
shell> cat /usr/local/nginx/logs/nginx.pid | xargs kill -HUP
HUP      重启
TERM,INT 快速停止
USR1    重新打开日志文件,用于日志切割
USR2    平滑升级可执行程序
QUIT     从容关闭
WINCH    从容关闭工作进程

//nginx服务器配置

#编辑nginx主配置文件
shell> vim /usr/local/nginx/conf/nginx.conf
user  apache apache;
worker_processes  2;
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 {include       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  logs/access.log  main;sendfile        on;tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;gzip  on;include virtual/www_zijian_com_conf;    #包含虚拟主机文件目录
}#编辑虚拟配置文件
shell> mkdir /usr/local/nginx/conf/virtual
shell> cd /usr/local/nginx/conf/virtual
shell> vim www_zijian_com_conf
--------------------------------------------
upstream www_zijian_com {server 10.10.54.157:8080 max_fails=3 weight=2 fail_timeout=60s;    #本机也充当一台web服务器server 10.10.54.159:10081 max_fails=3 weight=1 fail_timeout=60s;    #10.10.54.159这个web服务器上的10081端口正在监听状态server 10.10.54.152:10080 max_fails=3 weight=3 fail_timeout=60s;server 10.10.54.150:1500 max_fails=3 weight=4 fail_timeout=60s;
}#nginx服务器在www.zijian.com:80(下面的配置中)端口监听来自客户端的连接,然后通过反向代理,由upstream部分决定吧用户的请求负载到哪台web服务器上,weight=number参数可以指定某台web服务器的权重
server {listen  80;server_name www.zijian.com;    #nginx服务器访问地址,浏览器中输入的是这个网址charset uft-8;access_log logs/www.access.log main;index index.html;location / {proxy_pass http://www_zijian_com;proxy_set_header HOST $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}#nginx服务器本身也充当web服务器,所以这里也要配置
server {listen  8080;server_name www.zijian.com;charset uft-8;access_log logs/www.access.log main;root /var/www/html;index index.html;
}
--------------------------------------------#浏览器中输入www.zijian.com 测试nginx负载均衡
#注意:浏览器的缓存会干扰测试结果,所以你要确保www.ziji被正确解析为nginx服务器的IP,这个例子中是10.10.54.15#虚拟配置文件另一中形式
-----------------------------------------------------------------------
upstream www_zijian_com {server 10.10.54.159:10081 max_fails=3 weight=1 fail_timeout=60s; #仅有三台web server负载server 10.10.54.157:8080 max_fails=3 weight=2 fail_timeout=60s;    #本机web服务器server 10.10.54.152:10080 max_fails=3 weight=3 fail_timeout=60s;    
}
server   {listen  80;server_name www.zijian.com;charset uft-8;access_log logs/www.access_nginx.log main;index index.html;location / {proxy_pass http://www_zijian_com;proxy_set_header HOST $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}
#不同与上一个配置文件,当upstream把用户请求负载到10.10.54.157:8080上时,再一次启动代理,代理到10.10.54.150:1500端口
server   {listen  8080;    #监听8080端口access_log logs/www.access_nginx.log main;location / {proxy_pass http://10.10.54.150:1500;}
}
----------------------------------------------------------------------------------










转载于:https://my.oschina.net/zijian1315/blog/207294

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/300055.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么现在老师这么难,值得大家深思

致各位老师不知不觉,顶级教师圈已经陪伴大家走过3个月的时光。我们每天为教师们推送教育资讯,得到了许多关心和支持。为了感谢各位教师们的支持和鼓励,顶级教师圈今日特举办限时资源福利活动。我们精心整理了100G海量教学资源,包含…

学计算机要买什么样的电脑,大学开学要买电脑吗?又要买什么样的电脑?看准这些再买也不迟!...

电脑是我们生活中重要的通讯工具,方便了我们学习办公、工作设计、娱乐游戏,我们也越来越依赖电脑处理不同的事情,尤其是现在的开学季,很多准大学生都准备给自己购置一台电脑,但是由于自己不懂,买了怕被坑&a…

如果格局决定人生,那到底什么决定了格局

全世界只有3.14 %的人关注了青少年数学之旅真正决定人与人之间的差距的,其实是我们对事物的见识与内心的格局,见识的深浅决定人生的深浅,格局的大小决定了人生之路是宽是窄。今天给大家推荐几个有深度、有想法的公众号,希望能够给…

海尔微型计算机一键还原怎么操作,教你电脑一键还原怎么操作

当系统使用的时间久了,出现了不好修复的问题,可使用电脑的一键还原来解决。但一些用户不知电脑一键还原怎么操作呢?其实方法并不难,有需要的用户,请来看看下面的步骤吧一键还原又叫做一键恢复,计算机系统出现问题时就…

我从大厂面试中学到的关于 C# 的知识

我从工作面试中学到的关于 C# 的知识原文链接:https://michaelscodingspot.com/what-i-learned-about-c-from-job-interviews/作者:Michael Shpilt我最近参加了一些最大的科技公司的一系列工作面试。在没有透露姓名的情况下,我得到了世界排名…

深入浅出自定义标签(二)生成javascript

自从写了深入浅出自定义标签(一)入门之后一直没有得出时间继续写,正好这次项目中用到"自定义标签",这次的用途是通过Session中的存储的相关功能点的List,进行迭代生成javascript脚本,在前台通过javascript生成树桩结构所有的页面元素都是Html,包括javascript所以生成…

曾凭一己之力推动物理学发展,是清华大学最年轻教授,世界却欠他一个诺贝尔奖!...

全世界只有3.14 %的人关注了青少年数学之旅说起中国最牛的科学家,大家可能都会想起钱学森。钱学森被美国称为“一个人抵五个师”并阻止他回国的故事,几乎家喻户晓。钱学森但事实上,在中国近代,也有一个科学大牛,曾被美…

SharpDeveloeper开发ASP.NET MVC汗流浃背

今天好不容易休息了一天,上网狂了一圈,突然想起了以前的一个轻量级的开发工具“SharpDeveloper”,于是就下载试着来开发一下ASP.NET,但是老魏没有想到的是,虽然官方提供了对ASP.NET MVC的支持,但是实际开发…

Vue 2升级 Vue 3初探小细节

【导读】嗯,偶尔看看学习Vue 3技能啦,此前用过Vue 2做过一点东西,Vue 3已面世一段时间,于是乎,我来看看所遇到的问题是否在Vue 3中得到解决首先,我们来讲讲一个例子在Vue 2中的实现,举个栗子吧&…

计算机竞赛游戏探险岛,冒险岛2五大全新团本综合分析

随着新版本的到来,这次推出了两个混沌团本,分别是影子军团祭坛、月光船长要塞。三个10人新团本,分别是迷宫集会堂、路贝里斯克、不灭神殿。混沌团本可以掉落橙装,新团本则可以掉落专属武器。影子军团祭坛是我们的两大混沌本之一&a…

薛定谔的猫——.NET 4.1 中的新基类,开源Preview中

前言: 昨天一如既往地登上forums.asp.net答帖子,却被上面的一条滚动新闻雷到了: .NET 4.1 Preview - New Base Class Library (BCL) Extension Methods - RFC 因为考虑到April 1st的关系,这是Scott Hanselman给大家开的玩笑&…

史上最硬核文科生,擅长解决数学难题,却视考试成为终生噩梦

全世界只有3.14 %的人关注了青少年数学之旅“数学存在的价值,不只是为了生活上的应用,它不应沦为供工程、商业应用的工具,数学的突破仍需要不断地去突破现有格局。”——节选自《数学之旅 闪耀人类的54个数学家》他是一位浪漫的法国人&#…

胡晓曼:MindSpore 开源运营与治理 | DEV. Together 2021 中国开发者生态峰会

内容来源:2021 年 6 月 5 日,由 SegmentFault 思否主办的 2021 中国开发者生态峰会圆满落幕。会上,华为 MindSpore 运营总监胡晓曼发表了主题为《MindSpore 开源运营与治理》的演讲。分享嘉宾:胡晓曼,华为 MindSpore 运…

C# 语言特性

Codeusing System;using System.Collections.Generic;using System.Text;namespace InterfaceShadow{ interface ISomeInterface { void DoSomething(); } class Class1 : ISomeInterface { #region ISomeInterface 成员 public void DoSo…

如何掌握C#的核心技术

如何掌握C#的核心技术原图来自网络,如有侵权,请联系小编删除。引子前不久看到一个段子,某年宁波交警引进人脸识别技术抓拍行人闯红灯,结果一天下来被发现闯红灯次数最多的是珠海女子董小姐,日闯红灯3000多次。宁波交警…

怪咖发明家,乔布斯给了他四亿,他没要,转身靠发明救了10亿人。

全世界只有3.14 %的人关注了青少年数学之旅提到乔布斯,大家会想到什么呢?苹果公司创始人?iPhone手机?iPad?人生赢家?不过大家肯定没有想到乔布斯也有吃瘪的时候:有一次,乔布斯对电动平衡车赛格…

祝贺|合肥.NET俱乐部第二期技术沙龙活动圆满成功

热烈祝贺合肥.NET俱乐部第二期技术沙龙圆满成功,感恩参与活动的每一位小伙伴!正是因为有你们才促成了这次聚会的成功。现对此次活动进行简单回顾并附上精彩的活动图片,每一位参与活动者名单,以及此次活动讲师分享的PPT供大家学习下…

几个常用的JS代码.

//函数列表function PostCookie(cookieName) { var expdate new Date(); expdate.setTime(expdate.getTime() 604800000); document.cookiecookieName";expires"expdate.toGMTString()";path /;domain.52z.com"; }//用于产生随机轮转广告 i 随机个…

SQL中合并多行记录的方法总汇

SQL中合并多行记录的方法总汇——前几天还在抱怨:sql只有sum(数值),不能sum(字符串)——如果不是分组统计,用select values values , value也是可以的——但是如果是分组sum(字符串),肯定不行了!——下面是用函数实…

Python中文编码判别及转换

为什么80%的码农都做不了架构师?>>> 养成使用utf8格式的习惯,但是不能保证所有的代码都是utf8格式,所以这里提供三个函数 getCoding tran2UTF8 tran2GBK ,分别是查看编码格式,转换为utf8,gbk格…