nginx笔记


nginx是什么?能做什么?

nginx是一个高性能的Http和反向代理web服务器,占用内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。

专为性能优化而开发,性能是其最重要的考量,实现上注重效率,能经受高负载的考验,报告中支出其能支持高达50000个并发连接数。

nginx的反向代理

正向代理:如果把局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端要访问internet,则需要通过代理服务器进行访问,这种代理称为正向代理。(需要客户端配置,输入的是目标地址)

反向代理:客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,只需要将请求发送反向代理服务器,通过反向代理选择目标服务器获取数据后,返回客户端,向外暴露的是代理服务器地址,隐藏了真实服务器 IP地址。(客户端不需配置,访问反向代理服务器即可)

nginx的负载均衡

服务器进行集群,单个服务器解决不了的问题,通过增加服务器数量,然后将请求分发到各个服务器上,将最原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,称之为负载均衡。

nginx动静分离

为了加快网站的解析速度,可以把静态资源和动态资源分开放置,有不同的服务器来进行解析,加快解析速度,降低原来单个服务器的压力。

nginx的linux安装

nginx安装需要的依赖(根据个人的需要进行下载相关的依赖):

pcre-8.37.tar.gz、openssl-1.0.1t.tar.gz、

zlib-1.2.8.tar.gz、nginx-1.11.1.tar.gz

使用linux命令在有网的情况下安装

1.安装pcre依赖

wget http://downloads.sourceforge.net/project/pcre/pcre/8.32/pcre-8.37.tsr.gz

解压文件:tar - xvf pcre.tar.gz

在解压的文件夹中 cd pcre

执行检查配置文件:./configure

编译并安装:make &&make install

使用命令查看版本号:pcre-config –version

2.安装openssl和安装zlib

yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel

注:

一键命令安装四个依赖

yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

3.安装nginx

1.将安装包传输到linux服务器

2.解压文件: tar - xvf nginx.tar,gz

3.检查相关的配置:cd nginx后执行./configure

4.编译并安装:make && make install

安装成功后在usr/local/中有一个nginx的目录,启动nginx命令在sbin中

启动nginx命令:./nginx

查看启动的端口:ps -ef | grep nginx

启动时遇到错误:

error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory

安装的pcre依赖需要建立连接

##查找出错的文件位置
find / -type f -name *libpcre.so.*
##进行软连接
ln -s /lib64/libpcre.so.0.0.1 /lib64/libpcre.so.1
##启动nginx,在usr/local/nginx/sbin中执行
./nginx
##验证是否启动成功
ps -ef | grep nginx

##centos6查看防火墙
service iptables status
##开启防火墙
service iptables start
##关闭防火墙
service iptables stop
##开机不启动防火墙
chkconfig iptables off
##开机启动防火墙
chkconfig iptables on
##查看端口状态
/etc/init.d/iptables status
##重启防火墙
service iptables restart
##开放指定的端口,修改/etc/sysconfig/iptables文件,重启防火墙
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

##centos7查看防火墙
firewall-cmd --list-all
##查看防火墙状态
firewall-cmd --state
##开启防火墙
systemctl stop firewalld.service
##开机不启动防火墙
systemctl disable firewalld.service
##开机启动防火墙
systemctl enable firewalld.service
##设置开放端口号
firewall-cmd --add-service = http -permanent
sudo firewall-cmd --cmd --add-port=80/tcp --permanent
##重启防火墙
firewall-cmd -reload
nginx常用命令(在/usr/local/nginx/sbin/下使用)

1.查看nginx版本号

./nginx -v

2.关闭nginx

./nginx -s stop

3.启动nginx

./nginx

4.重加载(更改配置文件后,不需要重启nginx)

./nginx -s reload

nginx配置(配置文件的位置/usr/local/nginx/conf/)

配置文件的组成(主要分为三部分):

1.全局块:可以支持并发的数量,值越大可以支持的并发量越多

work processes 1;

2.events块:涉及nginx服务器与用户的网络连接

例如:worker processes 1024

3.http块:配置最频繁的部分,http包含http全局块和server块

server与虚拟主机相关,包括监听的端口号,主机名称,本地路径

反向代理实例

访问nginx时,跳转到tomcat的服务器中。

1.linux需要有tomcat,并且tomcat依赖jdk因此需要安装jdk

2.启动tomcat,进入tomcat的安装的路径下的bin文件夹下

##启动tomcat
./startup.sh
##查看启动情况,在tomcat的路径在,有logs目录
cd logs/
##查看日志
tail -f catalina.out
##在防火墙总添加8080端口(vim /etc/sysconfig/iptables)
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

3.用户访问80端口,利用反向代理转发到8080端口的web服务器中

1.用户本地host配置域名:

C:\Windows\System32\drivers\etc\的路径下有一个hosts文件,添加域名和用户名的映射

192.168.159.132 www .xing123.com

2.在nginx的配置文件中

修改server_name为自己的服务器地址

在licalation块中添加:proxy_pass http: localhost:8080;表示访问本地的web服务器位置

3.不同的路径访问不同的tomcat服务器

安装不同的tomcat并设置配置文件中的端口:8001、8002、8003等

设置nginx的server监听以及location中的转发位置,具体如下图:

image-20200504105942408

将监听的nginx端口号以及tomcat的端口号在linux的防火墙中配置

-A INPUT -m state –state NEW -m tcp -p tcp –dport 8081 -j ACCEPT

-A INPUT -m state –state NEW -m tcp -p tcp –dport 9001 -j ACCEPT

-A INPUT -m state –state NEW -m tcp -p tcp –dport 8080 -j ACCEPT

-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT

重新启动防火墙以及nginx

测试:

访问路径为:192.168.159.132:9001/edu/a.html,该路径映射到端口为8080的tomcat

访问路径为:192.168.159.132:9001/vod/b.html,该路径映射到端口为8081的tomcat

配置location路径是使用的通配符:

=:用于不含正则表达式的uri前,要求请求的字符串严格匹配

~:表示uri包含正则表达式,并且区分大小写

~*:表示uri包含正则表达式,并且不区分大小写

^~:用于不含正则表达式的uri前

负载均衡实例

对于同一请求分别均衡的分发到8080和8081的服务器中

1.准备两台服务器,8080和8081,并准备相同的资源及路径edu/a.html

2.负载均衡配置

image-20200504112024745

3.测试路径:http: 192.168.159.132/edu/a.html

对于同一地址分别在浏览器上显示不同的服务器地址

4.nginx分配服务器的策略:

第一种,默认策略为轮询策略;第二种,根据权重分配策略

第三种,ip地址hash;第四种,fair方式,按后台响应时间来分配请求

动静分离实例

将动态请求与静态请求分离开来,可以有两种分离方式

一种是将静态文件独立成单独的域名,放在独立的服务器上;另一种办法是动态跟静态文件混合在一起发布,通过nginx来分开。

通过location指定不同的后缀名实现不同的请求转发,通过expires参数设置,可以使浏览器缓存过期时间,减少与服务器之前的请求和流量。具体的Expires定义:是一个资源设定过期时间,也就是无需去服务器端验证,直接通过浏览器自身确认是否过期即可,所以不会产生额外的流量,此方法不适合经常变动的资源。例如设置为3d表示3天之内访问这个URL,发送一个请求,对比服务器改文件最后更新时间没有变化,则不会从服务器抓取,返回状态吗304,如果有更新,则直接从服务器重新下载,返回200。

案例准备:先建立一些静态资源,在根路径在建立data文件夹并建立两个子文件夹image以及www,在两个文件夹中放置静态的资源。

在nginx的配置文件中进行配置(/usr/local/nginx/conf/nginx.conf)

image-20200504145326327

在浏览器中测试,http: //192.168.159.132/image/dncs.jpg

nginx高可用集群

场景,当nginx服务器出现问题时,能够保证用户能够正常访问tomcat,配置两个nginx一个主服务器一个备份服务器,使用keeplived检测nginx是否存活,对外提供虚拟ip给两个nginx的ip地址进行绑定。

准备:两台服务器,两个服务器安装nginx,两台服务器安装keepaived

安装keepalived

yum install keepalived -y

查看安装情况

rpm -q -a keepalived

安装完成后在路径:/etc/keepalived/ 中有一个配置文件keepalived.conf文件,可以配置相关的信息。

启动nginx和keepalived

./nginx

systemctl start keepalived.service

当主nginx挂掉后,需要调用外部的配置文件(shell脚本)将kill掉nginx主机上的keepalived。

nginx原理

master&&worker,启动nginx后会启动master进程和worker进程,worker进程争抢资源。

一个master和多个worker设计有利于热部署,每个worker为一个独立的进程,worker的数量与服务器的cpu核数大致相等。

worker_connection,一个请求会占用2个或者4个连接数

一个master有4个worker,worker最大支持1024连接,求最大并发数量:

请求的是静态资源,需要除以2

worker_connectionworker_processes/2

或者

如果作为反向代理,需要除以4

worker_connectionworker_processes/4


文章作者: it星
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 it星 !
 上一篇
Maven工具 Maven工具
it星
Maven工具 前提是已经在自己本地有一个maven仓库,个人使用的是3.3.9版本的maven。 准备构建一个maven项目来进行spring的复习,发现之前学习的maven搭建项目的步骤突然忘记了,最近一直在做一些算法的题目和论文的
2020-05-14
下一篇 
pddl规划 pddl规划
角括号<> 表述名字 圆括号()元素名字 方括号[]围绕着option An asterisk(*)means “zero or more of” a plus(+)means“one or more of” 规划系统是问题求解
2020-04-30
  目录