目录
一.使用alias实现虚拟目录
二. 通过stub_status模块监控nginx的工作状态
三. 使用limit_rate限制客户端传输数据的速度
四. nginx虚拟主机配置
1.基于端口的虚拟主机
2. 基于IP的虚拟主机
3. 基于域名的虚拟主机
nginx配置文件: /etc/nginx/nginx.conf
nginx额外的配置文件目录 : /etc/nginx/nginx.conf.d
nginx默认网站发布目录: /usr/share/nginx/html
一.使用alias实现虚拟目录
实验设备:Rocky_linux9.4
实验IP : 192.168.226.139
实验准备:关闭防火墙和selinux
首先修改原配置文件,在server块中root对应的发布目录,最后加上/ceshi
server {
listen 80;
listen [::]:80;
server_name _;
root /usr/share/nginx/html/ceshi;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
然后进行执行如下命令:
mkdir /usr/share/nginx/html/ceshi
echo "webserver" > /usr/share/nginx/html/ceshi/index.html
echo "alias" > /usr/share/nginx/html/index.html
systemctl restart nginx
现在打开在浏览器访问nginx主机的IP地址 http://192.168.226.139/ceshi
可以看到访问到webserver字样的网页
现在把nginx.conf配置文件中在server块中加入location块,引入alias关键字
server {
listen 80;
listen [::]:80;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location /ceshi {
alias /usr/share/nginx/html;
index index.html;
}
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
然后重启nginx
systemctl restart nginx
然后刷新网站http://192.168.226.139/ceshi发现看到alias页面
再将nginx.conf配置文件中前面加的 alias改成root,然后重启nginx
location /ceshi {
root /usr/share/nginx/html;
index index.html;
}
systemctl restart nginx
再刷新网页发现又变回webserver页面了
可见alias作用:
alias
指令在 Nginx 中的作用是将指定的 URI 路径映射到文件系统中的一个目录。与 root
指令不同的是,alias
完全替换了匹配到的 URI 部分,而 root
只是追加到匹配到的 URI 之后。
在上面的例子中虽然访问是http://192.168.226.139/ceshi/ ,但是alias参数会把替换掉/ceshi,然后访问默认发布目录。
二. 通过stub_status模块监控nginx的工作状态
实验设备:Rocky_linux9.4
实验IP : 192.168.226.139
实验准备:关闭防火墙和selinux
1. 通过 nginx -V 命令查看是否已安装 stub_status 模块,默认安装nginx就有这个模块
2. 编辑 /etc/nginx/nginx.conf 配置文件
vim /etc/nginx/nginx.conf
#添加如下内容
location /nginx-status {
stub_status on;
access_log /var/log/nginx/nginxstatus.log; # 设置访问日志文件的位置
auth_basic "nginx-status"; # 启用基本认证,并设置认证区域名称为 "nginx-status"
auth_basic_user_file /etc/nginx/htpasswd; # 指定包含用户名和密码的文件位置
}
3. 创建认证口令文件并添加用户zhangsan和ddoo123,密码用md5加密
下载htpasswd工具
#htpasswd是开源 http 服务器 apache httpd 的一个命令工具,用于生成 http 基本认证的密码文件
yum install -y httpd-tools
创建新的密码文件并添加用户 zhangsan -c 创建解密文件,-m MD5加密
htpasswd -c -m /etc/nginx/htpasswd zhangsan
或使用:
在已有的密码文件中添加用户 zhangsan
htpasswd -m /etc/nginx/htpasswd zhangsan
#上述是两种创建方式,根据实际情况灵活使用,当创建命令执行后,会让你输入要设置的密码
4. 重启服务
systemctl restart nginx
5. 客户端访问http://192.168.226.139/nginx-status即可
Active connections
解释: 当前与 Nginx 服务器建立的活动连接数,包括正在处理的连接和保持活动状态的空闲连接。
server accepts handled requests
解释: 这是三组数字,分别表示服务器的总接收次数、总处理次数和总请求次数。
5 5 5
接收次数 (accepts): 服务器接受的总连接数。
处理次数 (handled): 服务器成功处理的总连接数。这通常等于接受的连接数,除非有一些连接在处理前被拒绝或失败。
请求次数 (requests): 服务器处理的总请求数。这表示所有连接中发送的 HTTP 请求总数。
Reading
解释: Nginx 正在读取客户端请求头的连接数。
Writing
解释: Nginx 正在向客户端发送响应数据的连接数。
Waiting
解释: 在 keep-alive 状态下等待客户端发起请求的空闲连接数。
三. 使用limit_rate限制客户端传输数据的速度
实验设备:Rocky_linux9.4
实验IP : 192.168.226.139
实验准备:关闭防火墙和selinux
limit_rate
参数用于限制单个连接的传输速率,这对于控制带宽、节省资源或确保所有用户都有平等的访问体验非常有用。
1. 在/etc/nginx/nginx.conf配置文件的server块中对应的location块加入 autoindex on;
如下:
location /ceshi {
root /usr/share/nginx/html;
index index.html;
autoindex on; # 启用 autoindex 功能
}
2.没有tar和zip工具先下载
yum install -y tar zip
然后在自定义的发布目录中创建一个文件
tar -zcvf /usr/share/nginx/html/ceshi/lzz.tar.gz /var
3.删除原来的index.html文件
rm -f /usr/share/nginx/html/ceshi/index.html
4.刷新浏览器重新打开http://192.168.226.139/ceshi/
发现变成了显示的文件,也就是刚创建一个压缩文件
现在点击下载看,会发现很快就下载好了
5.现在编辑/etc/nginx/nginx.conf配置文件的server块中对应的location块加入limit_rate 2k;
如下:
location /ceshi {
root /usr/share/nginx/html;
index index.html;
autoindex on; # 启用 autoindex 功能
limit_rate 2k; #对每个连接的限速为2k/s
}
重启nginx
systemctl restart nginx
6. 然后刷新网页后再点下载
这时下载的速度就被限制为2048B左右,即2k左右。
四. nginx虚拟主机配置
实验前准备:
关闭防火墙和selinux
下载nginx
yum install -y nginx
修改和创建默认打开文件index.html
echo "ceshi1" > /usr/share/nginx/html/index.html
echo "server2" > /opt/index.html
给ens33网卡增加一个IP
ip a a 192.168.226.141/24 dev ens33
实验设备:Rocky_linux9.4
实验IP :
192.168.226.140
192.168.226.141
1.基于端口的虚拟主机
编辑/etc/nginx/nginx.conf文件
新增一个server块并修改端口和默认打开目录
server {
listen 80;
listen [::]:80;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
server {
listen 81;
listen [::]:81;
server_name _;
root /opt;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
具体可见图:
像这样编辑好保存退出,重启nginx
systemctl restart nginx
使用浏览器无痕模式访问:
192.168.226.140:80
192.168.226.140:81
可见结果如图:
2. 基于IP的虚拟主机
修改/etc/nginx/nginx.conf文件,修改为:
server {
listen 80;
listen [::]:80;
server_name 192.168.226.140;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
server {
listen 80;
listen [::]:80;
server_name 192.168.226.141;
root /opt;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
具体见下图修改:
像这样编辑好保存退出,重启nginx
systemctl restart nginx
使用浏览器无痕模式访问:
192.168.226.140
192.168.226.141
可见结果如图:
3. 基于域名的虚拟主机
修改/etc/nginx/nginx.conf文件,修改为:
server {
listen 80;
listen [::]:80;
server_name web.testpm.com;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
server {
listen 80;
listen [::]:80;
server_name web.1000phone.com;
root /opt;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
具体可见下图:
像这样编辑好保存退出,重启nginx
systemctl restart nginx
windows中配置本地域名解析
编辑C:\Windows\System32\drivers\etc\hosts文件,需要用记事本的管理员模式打开编辑
新增下述内容后保存退出:
192.168.226.140 www.text.com longlong.org
使用浏览器无痕模式访问:
web.testpm.com
web.1000phone.com
可见结果如图: