nginx
-
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
-
解决的问题
- 能够解决跨域的的问题
- 能够反向代理
- 能够处理并发问题,实现负载均恒
-
nginx的整体结构
该部分配置主要影响Nginx全局,通常包括下面几个部分:
配置运行Nginx服务器用户(组)
worker process数
Nginx进程PID存放路径
错误日志的存放路径
配置文件的引入
该部分配置主要影响Nginx服务器与用户的网络连接,主要包括:
设置网络连接的序列化
是否允许同时接收多个网络连接
事件驱动模型的选择
最大连接数的配置
定义MIMI-Type
自定义服务日志
允许sendfile方式传输文件
连接超时时间
单连接请求数上限
配置网络监听
基于名称的虚拟主机配置
基于IP的虚拟主机配置
location配置
请求根目录配置
更改location的URI
网站默认首页配置
-
基本操作步骤(windos)
-
下载nginx(选择.zip的)
-
解压然后进入nginx解压后的目录用cmd回车
-
配置nginx文件
-
进入conf目录有一个nginx.conf
-
修改配置文件
-
server{ listen ip:端口; 当listen出现了ip时,server_name就失去了意义。所以不配置也罢了。 server_name localhost; location / { proxy_pass http://127.0.0.1:8001; } 这个配置用于配置需要反向代理的服务地址http://127.0.0.1:8001(上面匹配成功就会反向代理这个地址) error_page 500 502 503 504 /50x.html; //错误页面路径 location = /50x.html { root html; } location ~\.(css|js|png)$ { //静态资源路径(注意是/不是\) root D:/real-name.management4/target/static; } }
server_name是什么?去这个博客看吧nginx的server_name
客户端通过域名访问服务器时会将域名与被解析的ip一同放在请求中。当请求到了nginx中时。nginx会先去匹配ip,如果listen中没有找到对应的ip,就会通过域名进行匹配,匹配成功以后,再匹配端口。当这三步完成,就会找到对应的server的location对应的资源。
-
启动nginx
在之前说的cmd中写命令 start nginx 或则直接双击nginx.exe 闪一下就代表启动了
nginx -s reload重启nginx
nginx -s stop 关闭nginx
-
访问配置的nginx
如:刚刚配置的ip:端口访问会出现nginx首页,当然你配置了proxy_pass就会反向代理,如果你配置错误或则启动代理服务错误就会显示错误页面。
-
配置多台服务实现负载均衡
-
upstream iot1{ //在http块设置如下属性 server 127.0.0.1:8001 weight=3; server 127.0.0.1:8002 weight=2; server 101.200.36.24:8001 weight=1; ip_hash 加这个就是第三种负载方式,可以实现session共享(IP不变就会同一台服务器服务) }
upstream是节点 ,然后自定义名字如iot1 格式如上,下面需要中间的地址和端口就是你要反向代理的服务地址,weight为权重,越大就是负载越高。默认为1
这里有三种负载算法
轮询: 每个请求按时间顺序逐一分配到不同的应用服务器,如果应用服务器down掉,自动剔除,剩下的继续轮询
权重:通过配置权重,指定轮询几率,权重和访问比率成正比,用于应用服务器性能不均的情况
ip_hash: 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个应用服务器,可以解决session共享的问题。
在服务后可以加如下标识
1)down
表示单前的server暂时不参与负载
2)Weight
默认为1.weight越大,负载的权重就越大。
3)max_fails
允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
4)fail_timeout
max_fails 次失败后,暂停的时间。
5)Backup
其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
-
location / { proxy_pass http://iot1; }
将之前写的地址换成upstream节点命名的就行,相当于将之前的几个服务地址通过这个节点映射。这里相当于配置了之前的一堆服务。
-
重启nginx (nginx -s reload)
-
注意
- 静态资源的路径和/
- 自定义upstream节点名字时注意下划线问题,如果不成功尝试去掉下划线
- weight设置时注意写成weight=1不要有空格。
-
5. 基本操作(linux版)
这里直接通过yum方式下载,如果不是centOS的可以自己百度找安装方式
yum update yun list | grep nginx yum install nginx (按y继续) whereis nginx (查看安装位置)
下面是获取nginx安装位置的主要目录
路径 作用 /usr/sbin/nginx nginx启动路径 /etc/nginx 存放nginx的配置文件 /usr/share/nginx 默认的nginx资源库 接下来我们vi进入 vi /etc/nginx/nginx.conf,这个就是我们的配置文件具体配置什么上面windos版都说了。
在文件中最下面有一个路径 include 路径 这个是默认server的路径 ,如果出现
Address family not supported by protocol
就看看默认配置里配置的是不是正确
如果不正确,配成这样就行了
server { listen 80; server_name localhost; #charset koi8-r; #access_log /var/log/nginx/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
启动nginx,敲入命令 :/usr/sbin/nginx,如果显示地址被绑定
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) nginx: [emerg] still could not bind()
通过查看进程,停掉nginx进程再使用命令
-
ps -ef | grep nginx kill -9 pid 查出来的进程id
最后,访问nginx页面,出现如下页面就是启动了,接下来就是配置文件实现反向代理了。配置完记得重启nginx。
-
具体配置如何配置可以自行百度都能找到对应答案 详细配置文档