【Linux笔记】 web服务——nginx相关
一、nginx
1、概念
Nginx 是一个高性能的 HTTP/反向代理服务器,同时支持负载均衡、邮件代理和静态资源缓存。其优势在于高并发连接处理、低内存消耗和模块化架构,常用于构建现代 Web 架构。
这里我们讲的是nginx类
二、nginx的安装与启动
1、步骤
注意:nginx的安装需要先配置好软件仓库和网络服务(先前博客有讲)
(1)安装nginx
dnf install nginx -y
示例
(2)启动nginx
systemctl enable --now nginx
示例
第一次启动应该会弹出些提示(created开头的),博主这里先前启动过所以没弹提示
(3) 关闭火墙(火墙放行)
firewall-cmd --permanent ---add-service=http
—— 在火墙中放行http服务
firewall-cmd --reload
—— 重启火墙
示例
通过该命令查看http是否在内:
firewall-cmd --list-all
三、nginx默认共享目录
1、进入nginx默认共享目录
会将该目录的东西都共享到网络上
2、共享目录里的index.html
进入该目录后,ls查看一下该目录的东西
可以看到一个叫index.html的东西,这是它的默认发布文件,里边就能够访问用户指定的内容了,试着访问一下(浏览器直接访问虚拟机ip地址)
这里我用echo写了个ip地址进去,访问即可看到,你们可以自己随便写点东西,如用户名,命令如下:
echo lincoln(这是博主的用户名) > index.html
3、查看默认使用的端口
默认端口为80
netstat -antlupe | grep nginx
示例
4、修改默认使用的端口
先进入/etc/nginx/路径,在里边查看一下文件(如下图)
可以看到一个nginx.conf的文件,修改此文件里边的参数即可改变端口号
进入nginx.conf
vim nginx.conf
示例
进入后,修改此项即可改变端口
修改完后,重启nginx
nginx -s reload
重启完才会生效!
修改完端口可能还需要去火墙那放行端口号,才能访问,所以建议不要去修改,默认80就行,只需要知道其能够修改即可
四、 nginx默认配置目录
下图就是 nginx默认配置目录
五、改变nginx默认共享目录的发布文件
在第三大点中讲过nginx默认共享目录的发布文件为index.html,我们可以将其修改成其他文件,如修改成自己创的文件
1、创建一个自己的文件(这里是test.html)
确保自己在/usr/share/nginx/html/路径下:
cd /usr/share/nginx/html/
在此路径下创建一个自己的文件,这里为test.html
vim test.html
示例
在里边随便编写一些字符,这里博主写的是自己的用户名
wq保存退出
2、将test.html更改为默认发布文件
进入路径/etc/nginx/并进入nginx.conf
cd /etc/nginx/
vim nginx.conf
示例
找到此行,添加如图指令
Tips:index可以指定多个文件,但是不会全部一起出现,而是会排队访问
修改完后,重启nginx
nginx -s reload
此时,我们在去浏览器访问自己虚拟机的ip地址,可以发现已经是test.html这个文件的内容了
六、改变nginx默认共享目录的路径
1、大致思路(与第五大点类似)
与修改默认发布文件(第五大点)相似,这里就不再赘述,基本思路就是:
(1)自己在/usr/share/nginx/下,新建一个目录
(2)随后在自己建的新目录下建立一个文件(如index.html)
(3)还是进入路径/etc/nginx/并进入nginx.conf
(4)修改此行的路径,将其修改成自己创的那个目录(如图)
注意:修改了默认路径后,下一行的index出也需要修改成自己目录里有的文件哦!此处跟着做的话就是index.html
(5) 修改完后,重启nginx
七、nginx访问控制
默认任何人都能访问你的nginx目录,如何限制呢?location能够解决
1、基于ip的访问控制「步骤」
(1)进入nginx.conf
vim /etc/nginx/nginx.conf
示例
(2)进入后添加location
进入后:找到server项里,这点很重要!!!
注意:location 大括号下的指令有读取顺序,前面的会先读取执行,然后再是后面的,比如这里先把deny all先写在前面,allow写在后面,就会先执行deny命令,而后面的allow就不会生效了
(3) 修改完,重启nginx
nginx -s reload
这样访问控制就设置成功了,现在只有允许的ip能够访问此目录,其他ip访问会出现网页报错(如图):
2、 基于用户的访问控制「步骤」
(1)先安装软件包httpd-tools
dnf install httpd-tools -y
示例
(2) 使用htpasswd
我们先查看一下/etc/nginx/.htpasswd:
ll /etc/nginx/.htpasswd
下面分两种情况:
1)显示“无法访问...没有那个文件或目录”
第一次使用htpassd应该都是这种情况,这是我们使用-cm:
htpasswd -cm /etc/nginx/.htpasswd test(这里的test是一个用户!)
按enter后输入密码,之后就会显示这个,代表该用户已经有密码了
2)显示出了文件
这种情况代表已经有了该文件,所以把-cm的c去掉,代表不创建、仅修改,这样就不会覆盖其他用户
htpasswd -m /etc/nginx/.htpasswd test(这里的test是一个用户!)
(3)进入nginx.conf
vim /etc/nginx/nginx.conf
示例
(4) 进入后,添加location
图中location下的名词解释:
auth basic on; —— 代表开启基本认证
auth basic user file /etc/nginx/.htpasswd; —— 代表指定认证文件
(5) 修改完,重启nginx
nginx -s reload
此时访问就会被要求输入用户和密码,这样用户访问控制就完成了
八、nginx虚拟机
1、基于ip的虚拟机
(1)添加新ip地址
ip a a 192.168.76.20/24(添加的ip地址根据自己的ip来写) dev ens160(这是博主的网卡,网卡写自己的)
示例(添加了2个ip地址)
(2)将新的ip分配不同的站点
我们需要做到访问10ip时去看一个文件,访问20ip时去看另一个文件,这样就分配了不同的站点
1)新建一个指定目录
建立一个指定目录,并在其下再建立news和bbs两个文件
mkdir /usr/share/nginx/virtualhost/{news,bbs} -p
2)指定ip地址访问文件
将10ip指定访问news的index.html;20ip指定访问bbs的index.html
echo 192.168.76.10 > /usr/share/nginx/virtualhost/news/index.html
示例
(3)进入 /etc/nginx/conf.d/
cd /etc/nginx/conf.d/
(4) 创建进入vhosts.conf
vim vhosts.conf
示例
(5)添加指令
添加下图指令 ,一个server就是一个虚拟主机
(6)修改完,重启nginx
nginx -s reload
这样我们浏览器访问10ip就会显示10的ip地址, 访问20ip就会显示20的ip地址,这样就做到了不同ip分配不同站点
2、基于域名的虚拟机
基于域名的虚拟机建立在基于ip之上,所以前期操作都是相同的,不再赘述,这里就讲不同的地方
(1)进入vhosts.conf,修改listen添加server_name
1)修改listen
将listen修改成80端口号
2)添加server_name
添加server_name,并给予网站域名
(2)添加dns
写了域名但是系统并不知道,所以要配置dns来让系统知道一个ip对应一个域名,这里演示配置Linux的dns,所以应该后面测试应该用Linux的浏览器访问域名哦!
1)进入/etc/hosts
vim /etc/hosts
示例
2)添加dns
(3)测试
这里演示配置Linux的dns,所以应该后面测试应该用Linux的浏览器访问域名哦!
news.lincoln.org对应10ip
bbs.lincoln.org对应20ip