,每次试验之前需要恢复环境为默认
恢复配置文件为默认
cd /usr/local/nginx
cp conf/nginx.conf.default conf/nginx.conf 将配置文件恢复默认
cp:是否覆盖"conf/nginx.conf"? y
地址重写的选项
1、last 防止地址乱跳 不再读其他rewrite
配置文件42行中添加
rewrite /a.html /b.html last;
rewrite /b.html /c.html;
sbin/nginx 开启服务
sbin/nginx -s reload 重新加载配置文件
systemctl stop firewalld 关闭防火墙
访问测试
2、break --不再读其他语句
vim 'dd'--剪切 删除
location / {
rewrite /a.html /b.html break;
root html;
index index.html index.htm;
}
location /b.html{
rewrite /b.html /c.html;
}
3、redirect---临时重定向(状态码302)
4、permanent--永久重定向(状态码301)
location / {
rewrite /a.html /b.html permanent;
root html;
index index.html index.htm;
}
location /b.html{
rewrite /b.html /c.html;
curl 192.168.2.5/a.html
<html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.17.6</center>
</body>
</html>
网站状态码
404---报错
304---调用浏览器缓存
200---成功
能够同时处理用户访问量的指标 ---并发
集群 将多个服务器合成一个
web1 web2 安装软件包
yum list | grep *** 查看软件包
yum -y install vim bash-completion net-tools httpd psmisc
写网站页面 进行测试
[root@proxy nginx]# curl 192.168.2.100
web1
[root@proxy nginx]# curl 192.168.2.200
web2
创建集群
upstream web{ #创建集群的命令 web为集群的名称(定义为提供什么服务)
server 192.168.2.100:80; #两个服务器
server 192.168.2.200:80;
}
调用集群
location / {
proxy_pass http://web;
测试
[root@proxy nginx]# sbin/nginx -s reload #重新读取配置文件
测试是否成功(客户机访问代理机器)#会在两台服务器之间切换
[root@proxy nginx]# curl 192.168.2.5
web1
[root@proxy nginx]# curl 192.168.2.5
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报错
error_page 404 /test.jpg
2、查看后台数据
location /status {
stub_status on;
allow 192.168.2.5;
deny all
}
sbin/nginx -s reload //重加载配置
192.168.2.5/status //查看页面
Active connections:当前活动的连接数量(当前有多少用户访问该网站)。
Accepts:已经接受客户端的连接总数量。
Handled:已经处理客户端的连接总数量。
Requests:客户端发送的请求数量。
Reading:当前服务器正在读取客户端请求头的数量。
Writing:当前服务器正在写响应信息的数量。
Waiting:当前多少客户端在等待服务器的响应。
3、缓存文件在客户端(默认30天)
location ~* \.(jpg|html|txt|png)$ { //当用户访问的是这几种类型的文件
expires 30d;
用火狐浏览器清空历史记录 地址栏输入about:cache
4、安装Nginx之后V查看--安装模块