nginx自学笔记

1.反向代理
(1.)正向代理:在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问。
(2.)反向代理:我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露了代理服务器地址,隐藏了真是服务器ip地址。
2.负载均衡
客户端发送多个请求到服务器,服务器处理请求,有一些可能要与数据库进行交互,服务器处理完毕后,在将结果返回客户端。

安装nignx
1.安装pcre依赖,先用tar命令解压,然后进入解压后的文件夹,执行./configure,可能会发现没有gcc,执行下面命令安装 openssl 、zlib 、 gcc 依赖

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

进入pcre目录,执行./configure命令,正常执行后,执行make && make install命令进行安装。执行pcre-config --version命令会出现安装的版本,如果没有出现,则表示没有安装成功。

2.安装nginx,先用tar命令解压,进入解压好的目录,执行./configure命令,没有问题后执行make && make install命令进行安装,安装成功之后,在/usr/local目录下,会有一个nginx文件,在nginx目录下
/sbin目录下有启动脚本。./nginx启动失败的话,执行以下命令就可以运行

find / -type f -name *libpcre.so.*
ln -s /lib64/libpcre.so.0.0.1 /lib64/libpcre.so.1

开放80端口,让外界可以访问到nginx:
查看开放的端口号:firewall-cmd --list-all
设置开放的端口号:
firewall-cmd --add-service=http -premanent
sudo firewall-cmd --add-port=80/tcp -permanent
重启防火墙
firewall-cmd --reload

上面这种命令不能执行的话,可以用下面这种方式开放端口
vim /etc/sysconfig/iptables
复制里面有22的那行,把22改成自己想开的端口号
service iptables restart,端口开启成功。

nginx常用命令:
使用命令的前提,要进入/usr/local/nginx/sbin目录下
./nginx:查看nginx的版本号
./nginx:启动nginx
./nginx -s stop:关闭nginx
./ngixn -s reload:重新加载nginx

nginx的配置文件:
位置:/usr/local/nginx/conf …/nginx.conf
nignx配置文件由3部分组成:
1.全局块
从配置文件开始到events块的内容主要会设置一些影响nginx服务器整体运行的配置指令
worker_processes 1; 值越大(一般用4或8,不用2,会导致主进程挂掉),nginx能处理的用户并发量越大
2.events块
events块涉及的指令主要影响ngin服务器和用户的网络连接
worker_connections 1024; 支持的最大连接数
3.http块
nginx服务中配置最频繁的部分
(1)http全局块:配置指令包括文件引入,MIME-TYPE定义,日志自定义,连接超时时间,单链请求数上限等…
(2)server块:这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是一样的,该技术的产生是为了节省互联网服务器硬件成本。

反向代理实例

效果:在浏览器地址栏中输入www.123.com,弹出的是tomcat页面
先修改hosts文件
	虚拟机ip地址  自己做的域名
	192.168.1.xxx www.123.com
这样做,在浏览器中输入www.123.com就能访问到linux服务器了,	

在这里插入图片描述
在这里插入图片描述
localtion指令说明:

location =|~|~*|^~| uri{
1、= :用于不含正则表达式的uri前,要求请求字符串与uri严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。。
2、~:用于表示uri 包含正则表达式,并且区分大小写。。
3、~*:用于表示uri包含正则表达式,并且不区分大小写。。
4、^~:用于不含正则表达式的uri前,要求Nginx 服务器找到标识uri和请求字符串匹配度最高的location 后,立即使用此location处理请求,而不再使用location块中的正则  和请求字符串做匹配。。
注意:如果uri包含正则表达式,则必须要有~或者‘ *标识。。

负载均衡实例

1.实现效果:浏览器地址栏输入 http://192.168.1.13/edu/a.html ,平均8080和8081端口中
2.准备工作:用两个tomcat服务器实现,8080和8081,在两台tomcat中的webapp下创建edu文件夹,创建a.html文件
3.在nginx配置文件中进行负载均衡
http{
......
upstream myserver{
	#ip_hash;
	server 192.168.1.13:8080 weight=1;#weight=1(默认为1)  weight代表权,权重越大,被分配的客户端越多
	server 192.168.1.13:8081;
	#fair; 
}
server{
	listen               80;
   server_name 192.168.1.13;
   location /{
   			proxy_pass http://myserver;
   }
}

注意:upstream myserver中的myserver一定要放到location中

nignx负载均衡的基本策略:

1.轮询:每个请求按照不同时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,则会自动剔除
2. weight:weight=1(默认为1)  weight代表权,权重越大,被分配的客户端越多
3. ip_hash:每个请求按照ip的hash结果分配,这样每个客户端固定访问一个服务器,可以解决session问题
4. fair(第三方):按照后端服务器响应时间来分配请求,响应时间短的优先分配

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

准备工作:在linux中准备一些静态资源
在这里插入图片描述

server {
        listen       80;
        server_name  192.168.1.13;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location /www/ {
            root   /ndata/;
            #proxy_pass  http://127.0.0.1:8080;
            index  index.html index.htm;
        }

        location /image/{
           root  /ndata/;
           autoindex on;
        }

最终测试:http://192.168.1.13/image/
autoindex on:因为开启了这个属性,所以文件夹会以这种方式存在
在这里插入图片描述
nginx配置高可用的集群
在这里插入图片描述
准备工作:
(1)准备两台服务器:192.168.1.13,192.168.1.12
(2)都安装好nginx
(3)在两台服务器安装keepalived,yum install keepalived -y ,可以通过rpm -q -a keepalived方法查看是否安装成功,安装成功后,会在/etc目录下生成一个keepalived的文件夹

完成高可用配置(主从配置):
keepalived.conf

global_defs {
   notification_email {      //配置通知邮件,非必须
        root@localhost
   }
   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id node1  #访问到主机,需要在/etc/host 下去进行配置,通过后面这个就可以访问到主机
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_script chk_http_port{
	script "/usr/local/src/nginx_check.sh";
	interval  2    # 检测脚本执行的间隔
	weight  -10
}

vrrp_instance VI_1 {
    state MASTER   # 备份服务器上将master改为BACKUP
    interface eth0     #网卡
    virtual_router_id 51   #主,备机上的virtual_router_id必须相同
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.50  #虚拟地址ip,主从必须一致                  
    }
    track_script {     //调用脚本
        chk_nginx
    }
}

启动keepalived:/etc/init.d/keepalived start(centos6.5版本)
systemctl start keepalived(centos7)
通过ip a指令可以看到主从复制的效果

nginx原理分析
1.master和worker
在这里插入图片描述
在这里插入图片描述
3.一个master和多个worker的好处
(1)可以使用nginx -s reload 热部署,利用nginx进行热部署操作
(2)每个worker是独立的进程,如果有其中的一个worker出现问题,其他worker是独立的,会继续争抢,实现请求过程,不会造成服务中断
4.设置多少个worker合适
worker数和服务器的cpu数相同时最合适的
5.连接数worker_connection
第一个:发送请求,占用了worker的几个连接数
2个或4个
第二个:nginx有一个master,有四个worker,每个worker支持的最大连接数据为1024,支持的最大并发数为多少?
普通的静态访问最大并发数是:worker_connectionworker_processes/2,而如果http作为反向代理来说,最大并发数应该为:worker_connectionworker_processes/4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值