nginx现阶段已经逐渐向主流的服务器程序靠拢,业界使用占比根据官方统计已经达到了百分之20以上。
今天就来简单的说一下nginx的功能概况,简单安装以及使用
1、什么是nginx
官方给出的定义:Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 服务器
2、nginx擅长什么
1)页面路由,微服务前端
现在的nodejs+nginx前端服务在很多领域都有使用。
2)集群负载功能 ,提高系统并发量
nginx的反向代理功能,可以对多个服务进行轮询调用。
3)静态服务器功能。
对一些html ,js ,css , image,文档等文件功能的服务
3、nginx的安装
因为nginx主要在linux系统上使用,这里就不说windows上的安装步骤了,
1)首先需要nginx.tar.gz包,这里使用1.9.0版本, 这里可以下载: http://nginx.org/download/nginx-1.9.0.tar.gz
或者:https://download.csdn.net/download/zhanglei082319/11055137
2)tar -zxvf nginx-1.9.0.tar.gz 解压
3)解压后进入目录 cd nginx-1.9.0
4)执行命令 :./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
--prefix 标识安装目录,默认/usr/local/nginx
5) 继续执行命令 make && make install 编译安装
到此为止安装成功
4、nginx启动
启动nginx : /usr/local/nginx/sbin/nginx
测试nginx配置: /usr/local/nginx/sbin/nginx -t
停止nginx: /usr/local/nginx/sbin/nginx -s stop
重新加载nginx.conf文件: /usr/local/nginx/sbin/nginx -s reload
退出: /usr/local/nginx/sbin/nginx -s quit
启动nginx后,打开浏览器后可以看到nginx首页:
5、nginx核心配置文件
/usr/local/nginx/conf/nginx.conf 该配置文件为nginx的核心配置文件,实际工作中,对nginx的部署重启,主要就是对这个配置文件的修改重启。
1)server
这是精简版的nginx.conf文件。
这里我们主要对server,以及server中一些常见的属性做讲解
server:顾名思义,就是服务
listen: 端口,这里可以定义成任意不重复的端口
server_name: 服务名称,可以定义成192.168.0.1等ip名称,也可以定义成www.***.com的域名,当然定义域名后如果window访问的话需要在windows/system32/drivers/etc/hosts文件中添加域名和ip的映射
location: 这是nginx非常重要的属性,一般运维人员修改nginx地址主要就是修改这个地方。
下面对location进行详细的说明
2)、location
location: 具体的映射地址。nginx读地址映射有以下几种规则
符号 |
含义 |
= |
= 开头表示精确匹配 |
^~ |
^~开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格) |
~ |
~ 开头表示区分大小写的正则匹配 |
~* |
~* 开头表示不区分大小写的正则匹配 |
!~和!~* |
!~和!~*分别为区分大小写不匹配及不区分大小写不匹配的正则 |
/ |
用户所使用的代理(一般为浏览器) |
$http_x_forwarded_for |
可以记录客户端IP,通过代理服务器来记录客户端的ip地址 |
$http_referer |
可以记录用户是从哪个链接访问过来的 |
3)proxy_pass : 反向代理
比如在location中添加以下配置后,
现在访问htttp://www.bcx.com/proxy,就会直接访问到搜狐网。这就表示当前nginx 地址是对搜狐网的代理地址
4) upstream : 负载服务配置
上面的配置文件中有这样的负载配置:
其中192.168.0.101:8080 和 192.168.0.101:8090是两个不同的springboot jar包项目。
nginx表示该upstream负载名称,名称可以随便起,叫test或者demo都可以
然后在server配置中添加location:
这个location中http://nginx/;中的nginx就是upstream 名称。
这时候我们访问http://www.bcx.com/dong就会发现每次请求的实际地址都不一样。
nginx会在A 服务和B服务之间不停的切换。
当然这种轮询切换服务的规则是nginx默认的负载轮询规则,在upstream中还可以设置ip _hash 表示以客户端的额hash值来确定请求那个服务,使用hash值后,一般客户端只会访问一个服务。
weight属性表示 服务轮询的频率,比如A服务设置3,则A服务会不停的调用3次在去调用其他服务。
以上