2021-05-18

一,地址重写的选项
last     不再读其他rewrite
break    不再读其他语句
redirect     临时重定向   状态码302
permanent   永久重定向   状态码 301
    
选项测试1:last   不再读其他rewrite
回复配置文件为默认状态
修改nginx主配置文件,在第42行添加以下两行
rewrite /a.html /b.html last;    //如果没有last,看a页面会得到c页面
的内容,加了last之后,就不会再读后面的rewrite了
rewrite /b.html /c.html;
写完后开启服务或者重新加载配置
systemctl stop firewalld

选项测试2:break 不再读其他语句
        location / {    //此处为默认的location
rewrite /a.html /b.html break;   //将last改为break可以阻止后面的语句
            root   html;
            index  index.html index.htm;
        }
location /b.html {     //这里是新添加的location
rewrite /b.html /c.html;
}
-------------------------------------------------------------------------------------------
二,使用nginx搭建集群,提高网站并发
并发 ,能够同时处理用户访问量的指标
50000   100万  1000万
集群  500

proxy  192.168.2.5
web1  192.168.2.100
web2  192.168.2.200

在web1、web2主机安装常用软件包与网站服务httpd
yum -y install vim bash-completion net-tools httpd psmisc
然后继续准备网站页面
echo "web1~~~~" > /var/www/html/index.html   //创建测试页面,如果是web2
主机的话要写web2~~~~
systemctl stop firewalld
systemctl restart httpd
然后去proxy访问 curl 192.168.2.100与2.200

在proxy主机修改配置实现集群效果
[root@proxy nginx]# vim conf/nginx.conf
upstream web {        //首先是34~37行,创建集群,集群名称叫web
server  192.168.2.100:80;   //这里是集群中的服务器ip与端口
server  192.168.2.200:80;   //第二台集群主机
}
server {
        listen       80;
        server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
proxy_pass  http://web;     //在第47行,调用集群
            root   html;
            index  index.html index.htm;
        }
开启或者重加载nginx服务之后,用浏览器访问192.168.2.5可以看到web1然后刷新可以看到web2

----------------------------------------------------------------------------
三,集群的优化
1,调节集群主机任务量分配
server 192.168.2.200:80 weight=2;    //权重,值越大,分配的任务量越多
sbin/nginx -s reload
curl 192.168.2.5     //反复访问,可以看到web2工作量增加

2,健康检查
server 192.168.2.200:80 max_fails=2 fail_timeout=30;   //检测两次如果失败
,则认为集群中的主机故障,之后等待30秒再次测试
sbin/nginx -s reload
测试时,先将web2的httpd服务关闭,回到proxy访问集群页面curl 192.168.2.5
只会显示web1的页面,此时即使将web2的httpd服务开启也无效,因为要等
待30秒

3,相同客户机访问相同服务器
upstream web {
ip_hash;   //相同客户机访问相同服务器,让一个客户机访问集群时锁定
一个后台服务器,避免重复登陆的问题
server 192.168.2.100:80;
server 192.168.2.200:80 max_fails=2 fail_timeout=30;
}

sbin/nginx -s reload
重加载配置后访问集群只会看到一个网站的页面

4,添加down 标记
upstream web {
ip_hash;
server 192.168.2.100:80;
server 192.168.2.200:80 down;   //添加down标记,使集群主机
暂时不参与集群任务
}


-----------------------------------------------------------------
四,使用nginx创建其他业务集群
./configure --with-stream --with-http_stub_status_module     //这里的--with-stream 是添加四层代理模块,可以用来创建其他业务集群
make
make install

cd /usr/local/nginx
vim conf/nginx.conf
打开nginx主配置文件,在16行左右(http上面),添加以下内容
stream {         //创建新业务
upstream backend {    //创建名叫backend的集群
server 192.168.2.100:22;    //集群中的主机使用22端口对外提供服务
server 192.168.2.200:22;
}
server {
listen 12345;    //监听端口号
proxy_pass backend;    //调用集群
}
}

sbin/nginx   //配置写好之后开启服务或者重加载配置文件
ssh  192.168.2.5 -p 12345    //尝试远程登录,第一次可能会连接集群的某一台主机比如web1
exit    //退出
[root@proxy nginx]# rm -rf ~/.ssh/known_hosts   //删除记录文件
ssh  192.168.2.5 -p 12345   //再次尝试登录,会连接到另外一台集群主机

----------------------------------------------------------------------------
ss命令可以查看系统中启动的端口信息,该命令常用选项如下:
-a显示所有端口的信息
-n以数字格式显示端口号
-t显示TCP连接的端口
-u显示UDP连接的端口
-l显示服务正在监听的端口信息,如httpd启动后,会一直监听80端口
-p显示监听端口的服务名称是什么(也就是程序名称)
注意:在RHEL7系统中可以使用ss命令替代netstat命令,功能一样,选
项一样。
----------------------------------------------------------------------------------------
五,nginx常见问题处理
1,404报错  ,以下实验都在proxy主机进行
首先修改配置文件 大概57~59行附近
error_page  404     /test.jpg;  //如果客户访问了不存在的页面就显示test.jpg的内容
sbin/nginx -s reload   //重加载配置
然后找一个图片扔到/usr/local/nginx/html里面,命名为test.jpg
使用浏览器虽随意访问不存在的页面192.168.2.5/XXXX.html   就可以看到之前
那张图片的内容
如果真机是windows可以用mobaXterm传test.jpg文件到nginx的html目录
如果真机是linux可以用scp命令

2,查看网站后台数据(重要功能)
--with-http_stub_status_module  //利用到的模块

location /status  {   //在error_page行上面添加此内容
stub_status on;
allow 192.168.2.5;    //只允许2.5查看
deny all;    //拒绝其他主机
}
     
sbin/nginx -s reload    //重加载配置                        
192.168.2.5/status   //查看页面

Active connections:当前活动的连接数量(当前有多少用户访问该网站)。
Accepts:已经接受客户端的连接总数量。
Handled:已经处理客户端的连接总数量。
Requests:客户端发送的请求数量。
Reading:当前服务器正在读取客户端请求头的数量。
Writing:当前服务器正在写响应信息的数量。
Waiting:当前多少客户端在等待服务器的响应。        

3,缓存文件在客户端
配置nginx的数据缓存,一台服务器的相同数据可能会被同一个客户反复访问,为了不重复让服务器给客户传递相同数据,达到节约资源、节省时间的目的,我们可以进行以下优化配置。
在虚拟主机中写一个location,方法如下:
location ~* \.(jpg|html|txt|png)$ {    //当用户访问的是这几种类型的文件
expires 30d;   //都会缓存在客户机上30天
}
配置完后重加载配置文件
使用火狐浏览器清空历史记录,然后访问192.168.2.5/test.jpg
然后地址栏输入about:cache
查看disk文件的列表,找到被访问文件看最后倒数第2列(Expires)信息显示多
久过期可以看到该文件的过期时间是一个月之后,说明缓存成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值