Nginx 是俄罗斯人编写的十分轻量级的 HTTP 服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个 IMAP/POP3/SMTP 代理服务器。Nginx 是由俄罗斯人 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor Sysoev 在创建的项目时,使用基于 BSD 许可。php
Nginx 作为 HTTP 服务器,有如下几项基本特性:html
Nginx 专为性能优化而开发,性能是其最重要的考量,实现上很是注重效率 。它支持内核 Poll 模型,能经受高负载的考验,有报告代表能支持高达 50,000 个并发链接数。
Nginx 具备很高的稳定性。
Nginx 支持热部署。
Nginx 代码质量很是高,代码很规范,手法成熟,模块扩展也很容易。nginx
HTTP基础功能:算法
IMAP/POP3 代理服务功能:apache
支持的操做系统:windows
结构与扩展:后端
其余HTTP功能:api
实验特性:缓存
perl
aio_read()
/aio_write()
的套接字工做的实验模块,仅在 FreeBSD 下。工做目录说明:要求在Nginx.exe目录下执行
1.启动命令
start nginx
Linux下命令: ./nginx
2.重起命令
nginx -s reload
Linux下命令: ./nginx -s reload
3.关闭命令
nginx -s stop
Linux下命令: ./nginx -s stoptomcat
反向代理:用户访问服务器,服务器知道客户信息,客户不知道服务器信息
正向代理:用户访问服务器,服务器不知道客户信息,客户知道服务器信息
默认访问路径:localhost:80
在conf目录下nginx.conf
只有一个http协议
#gzip on; #一个服务器,一个server server { #端口通常不改 listen 80; #监听域名 服务名称不能重复 server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; #开启反向代理 表明所有请求 location / { #root关键字 代理的是一个目录 root html; #index关键字 表明默认页面 index index.html index.htm; }
例如:
server { listen 80; server_name image.jt.com;#域名 location / { root D:/JT-SOFT/images;#本地磁盘位置 } } #必须在协议以内完成
做用:实现本地域名与ip地址的映射
默认路径:C:\Windows\System32\drivers\etc\hosts
#实现默认80跳转8091经过image.jt.com直接访问 server { listen 80; server_name image.jt.com; location / { #发起url请求地址 proxy_pass http://localhost:8091; } }
动态获取端口号
@RestController public class PortController { @Value("${server.port}") private int port; @RequestMapping("/getport") public String getport(){ return "端口号"+port; }
server{ listen 80; server_name manage.jt.com; location /{ #proxy_pass http://localhost:8091; proxy_pass http://jtwindows; } } #配置tomacat服务器集群 upstream jtwindows{ server 127.0.0.1:8081; server 127.0.0.1:8082; server 127.0.0.1:8083; }
打包项目三次 端口分别是8081,8082,8083
分别都运行到程序上经过域名/getport测试端口是否能实现轮训
默认是轮训策略
权重策论:weight数值越高访问越频繁数值越低基本不会被访问:
#配置tomacat服务器集群 upstream jtwindows{ server 127.0.0.1:8081 weight=50; server 127.0.0.1:8082 weight=1; server 127.0.0.1:8083 weight=2; }
iphash策论
upstream jtwindows{ ip_hash; server 127.0.0.1:8081 weight=50; server 127.0.0.1:8082 weight=1; server 127.0.0.1:8083 weight=2; }
缺点:1.容易形成负载不均
2.若是Ip地址与用户绑定在一块儿,若是tomcat服务器宕机,则直接影响用户 IPhash实用场景:通常进行压力测试时使用
Nginx支持以下处理链接的方法(I/O复用方法),这些方法能够经过use
指令指定。
--with-select_module
和 --without-select_module
来启用或禁用这个模块。--with-poll_module
和 --without-poll_module
来启用或禁用这个模块。/proc/sys/kernel/rtsig-max
来增长队列的大小。但是从Linux内核版本2.6.6-mm2开始, 这个参数就再也不使用了,而且对于每一个进程有一个独立的信号队列,这个队列的大小能够用 RLIMIT_SIGPENDING 参数调节。当这个队列过于拥塞,nginx就放弃它而且开始使用 poll
方法来处理链接直到恢复正常。1.down属性
说明:若是服务器宕机,则能够经过down属性把服务器宕掉
upstream jtwindows{ #ip_hash; server 127.0.0.1:8081 weight=50 down; server 127.0.0.1:8082 weight=1; server 127.0.0.1:8083 weight=2; }
2.backup属性
备用机的设定,通常条件下备用机是不干活的,可是当主机遇忙时,或者宕机是才会启用备用机
8081宕机了(down)启用备用机
upstream jtwindows{ #ip_hash; server 127.0.0.1:8081 weight=50 down; server 127.0.0.1:8082 weight=1; server 127.0.0.1:8083 weight=2 backup; }
3.tomcat服务器高可用
说明:若是人为添加down属性,效率不高,自动检测服务器是否宕机,若是宕机自动标识为down
max_fails=1设置最大的失败次数,若是超过最大次数则标识为down
fail_timeout=60s 失效的超时时间(60s)
upstream jtwindows { #ip_hash; server localhost:8081 max_fails=1 fail_timeout=60s; server localhost:8082 max_fails=1 fail_timeout=60s; server localhost:8083 max_fails=1 fail_timeout=60s; }
例如: 如URL重写(rewrite)不工做了或者是unix的路径(/$PATH)的问题云云...
请仔细阅读 [NginxDebugging] 而且 逐行 查看错误日志。
若是你没找到错误 打起精神 试着到IRC或邮件列表里说明一下你碰到的问题。
关于各自的优缺点请使用本身喜欢的搜索引挚查找 ;-)
有人知道吗?
大致上来讲nginx主要用于反向加速代理而不是像squid那样作为常规代理服务器。Nginx的最大优点在于高负载状况下内存和CPU的低消耗。 我不认为squid能给你带来比nginx更好的性能。
依照 [NginxImapProxyExample] 开始你的配置. 关于不一样配置参数的具体信息, 请查看 [NginxMailCoreModule] 页。
示例2: 使用运行于同一个服务器的 nginx-embedded-perl 模块做为 imap/pop代理和认证后端
有人知道不?
目前Nginx使用简单的轮巡算法,因此没法作基本连接计数的负载均衡。 这个可能会在未来的版本中有所改变。
基于 太多人询问下面的问题:
到目前为止 (2007-Apr-26) 尚未办法关闭到后端服务器的缓存.