一、Nginx
概述:
Nginx 是一款轻量级的高性能 Web 服务器、反向代理服务器以及电子邮件(IMAP/POP3)代理服务器。由俄罗斯人伊戈尔・赛索耶夫开发,其在处理高并发连接方面表现卓越,能够高效地处理大量并发请求,广泛应用于各种规模的网站和应用程序中。
特点:
1.高并发处理能力:采用事件驱动的异步非阻塞模型,能在少量线程下处理大量并发连接,在高并发场景下,Nginx 的性能优势明显,资源占用少,响应速度快。例如,一些大型电商网站在促销活动期间,Nginx 能稳定处理海量并发请求,保障网站的正常运行。
2.反向代理和负载均衡:作为反向代理服务器,可接收互联网用户的请求并转发到后端真实服务器,同时实现负载均衡功能,将请求均匀分配到多个后端服务器上,提高系统的可靠性和可扩展性。如将用户对网站的访问请求均衡分配到多个 Web 服务器上,避免单个服务器负载过高。
3.配置简洁:配置文件结构清晰,语法简洁,易于理解和维护。通过简单的配置指令,可实现各种复杂的功能,如虚拟主机设置、URL 重写、SSL/TLS 加密等。
nginx的安装与启动
1.安装
注意:nginx的安装需要先配置好软件仓库和网络服务
dnf install nginx -y
2.启动nginx
systemctl enable --now nginx
3.火墙放行
firewall-cmd --permanent ---add-service=http
—— 在火墙中放行http服务
firewall-cmd --reload
—— 重启火墙
检查http是否被放行
firewall-cmd --list-all
nginx默认共享目录
1、进入nginx默认共享目录
会将该目录的东西都共享到网络上
2、共享目录里的index.html
可以看到一个叫index.html的东西,这是它的默认发布文件,里边就能够访问用户指定的内容了,试着访问一下(浏览器直接访问虚拟机ip地址)
3、 查看默认使用的端口
默认端口为80
netstat -antlupe | grep nginx
4、修改默认使用的端口
先进入/etc/nginx/路径,在里边查看一下文件
可以看到一个nginx.conf的文件,修改此文件里边的参数即可改变端口号
vim nginx.conf
修改完毕后,重启
nginx -s reload
nginx默认配置目录
改变nginx默认共享目录的发布文件
创建一个自己的文件(例如test.html)
注意:请确保自己在/usr/share/nginx/html/路径下
cd /usr/share/nginx/html/
在此路径下创建一个自己的文件,这里为test.html
vim test.html
在里面写上内容,例:twbdsb
将test.html更改为默认发布文件
cd /etc/nginx/
vim nginx.conf
在nginx.conf中找到下图内容并修改修改完后,重启nginx
nginx -s reload
此时,我们在去浏览器访问自己虚拟机的ip地址,可以发现已经是test.html这个文件的内容了
改变nginx默认共享目录的路径
和上述操作一致
注意:修改了默认路径后,下一行的index出也需要修改成自己目录里有的文件哦!此处跟着做的话就是index.html
修改完后,重启nginx
nginx -s reload
nginx访问控制
默认任何人都能访问你的nginx目录,那我们要如何限制呢?通过location能够解决
基于ip的访问控制
vim /etc/nginx/nginx.conf
进入后添加location
进入后:找到server项
注意:location 大括号下的指令有读取顺序,前面的会先读取执行,然后再是后面的,比如这里先把deny all先写在前面,allow写在后面,就会先执行deny命令,而后面的allow就不会生效了
记得要重启nginx
nginx -s reload
基于用户的访问控制「步骤」
先安装软件包httpd-tools
dnf install httpd-tools -y
使用htpasswd
ll /etc/nginx/.htpasswd
下面分两种情况:
1)显示“无法访问...没有那个文件或目录”
第一次使用htpassd应该都是这种情况,这是我们使用-cm:
htpasswd -cm /etc/nginx/.htpasswd test(这里的test是一个用户!)
按enter后输入密码,之后就会显示这个,代表该用户已经有密码了
进入nginx.conf
vim /etc/nginx/nginx.conf
同样,修改完重启nginx
nginx -s reload
此时访问就会被要求输入用户和密码,这样用户访问控制就完成了
nginx虚拟机
基于ip的虚拟机
ip a a 192.168.188.41/24(添加的ip地址根据自己的ip来写) dev ens160(网卡写自己的)
将新的ip分配不同的站点
我们需要做到访问21ip时去看一个文件,访问25ip时去看另一个文件,这样就分配了不同的站点
新建一个指定目录
建立一个指定目录,并在其下再建立news和bbs两个文件
mkdir /usr/share/nginx/virtualhost/{news,bbs} -p
指定ip地址访问文件
将21ip指定访问news的index.html;25ip指定访问bbs的index.html
进入 /etc/nginx/conf.d/
cd /etc/nginx/conf.d/
创建进入vhosts.conf、
vim vhosts.conf
添加指令
添加下图指令 ,一个server就是一个虚拟主机
修改完,重启nginx
nginx -s reload
这样我们浏览器访问21ip就会显示10的ip地址, 访问20ip就会显示25的ip地址,这样就做到了不同ip分配不同站点
进入vhosts.conf,修改listen添加server_name
修改listen
将listen修改成80端口号
添加server_name
添加server_name,并给予网站域名
添加dns
写了域名但是系统并不知道,所以要配置dns来让系统知道一个ip对应一个域名,这里演示配置Linux的dns,所以应该后面测试应该用Linux的浏览器访问域名哦!
进入/etc/hosts
添加dns
这里演示配置Linux的dns,所以应该后面测试应该用Linux的浏览器访问域名哦!
最后发现基于域名已经可以访问到对应IP地址的nginx服务器,实验就成功了。