目录
一:基于授权的访问控制
1:基于授权的访问控制简介
(1)定义:
-
防止未授权访问,保护数据机密性、完整性及可用性。
-
遵循最小权限原则,减少权限滥用风险。
(2)目的:
-
权限分离:根据角色、属性或上下文动态分配权限。
-
动态策略:结合用户身份、环境因素(如时间、位置)进行实时决策。
2:基于授权的访问控制步骤
(1)使用htpasswd生成用户认证文件
yum -y install httpd-tools(用于生成认证文件)
htpasswd -c /usr/local/nginx/passwd.db zhangsan(用户) #-c创建
htpasswd /usr/local/nginx/passwd.db lisi
cat /usr/local/nginx/passwd.db #查看密文
(2)修改密码文件权限为400,将所有者改为nginx,设置nginx的运行用户能够读取
chmod 400 /usr/local/nginx/passwd.db #设置权限
chown nginx /usr/local/nginx/passwd.db
(3)修改主配置文件nginx.conf,添加相应认证配置项
vim /usr/local/nginx/conf/nginx.conf
location / {
auth_basic "secret";
auth_basic_user_file /usr/local/nginx/passwd.db;
}
(4)检查语法,重启服务
nginx -t
systemctl restart nginx
二:基于客户端的访问控制
1:基于客户端的访问控制简介
(1)定义:
基于客户端的访问控制(Client-Based Access Control)是一种依赖客户端环境属性(如设备状态、地理位置、软件配置等)动态管理资源访问权限的机制。其核心在于通过客户端的本地信息或行为特征进行权限决策,而非完全依赖服务端策略。
(2)目的:
-
适应多样化终端环境,动态调整访问权限。
-
降低服务端计算负担,提升响应效率。
-
防范来自不安全客户端的潜在威胁(如恶意设备、未授权应用)。
(3)优势:
-
灵活性:适应客户端动态变化(如设备位置切换)。
-
低延迟:减少与服务端的交互次数。
2:基于客户端的访问控制步骤
(1)修改主配置文件nginx.conf,添加相应认证配置项
vim /usr/local/nginx/conf/nginx.conf
location / {
#auth_basic "secret";
#auth_basic_user_file /usr/local/nginx/passwd.db;
deny 192.168.10.202(某一个IP地址);
allow all;
}
三:Nginx虚拟主机
1:基于域名的虚拟主机
(www.aaa.com、www.bbb.com->一个IP)不同的网址解析为同一个IP地址
修改hosts文件:192.168.10.201 www.aaa.com
192.168.10.201 www.bbb.com
mkdir -p /var/www/html/aaa/
mkdir -p /var/www/html/bbb/
echo "www.aaa.com" >> /var/www/html/aaa/index.html
echo "www.bbb.com" >>/var/www/html/bbb/index.html
vim /usr/local/nginx/conf/nginx.conf
server {
listen 80;
server_name www.aaa.com;
access_log log/www.aaa.com.access.log;
charset utf-8;
location /{
root /var/www/html/aaa;
index index.html index.htm;
}
}
server {
listen 80;
server_name www.bbb.com;
access_log log/www.bbb.com.access.log;
charset utf-8;
location /{
root /var/www/html/bbb;
index index.html index.htm;
}
}
nginx -t
systemctl restart nginx
-
注意事项:
-
支持HTTPS时需配置SNI,为每个域名指定独立SSL证书。
-
优先级:精确匹配域名 > 通配符域名 > 默认
server
块(首个或标记为default_server
)。
-
2:基于IP的虚拟主机
(192.168.10.201:80、192.168.10.200:80)不同的IP地址使用相同的端口
cd /etc/sysconfig/network-scripts/
复制并修改子接口:cp ifcfg-ens33 ifcfg-ens33:0
cp ifcfg-ens33 ifcfg-ens33:1
nmcli c reload
nmcli c up ens33
ip add
vim /usr/local/nginx/conf/nginx.conf
server {
listen 192.168.10.201:80;
server_name www.aaa.com;
access_log log/www.aaa.com.access.log;
charset utf-8;
location /{
root /var/www/html/aaa;
index index.html index.htm;
}
}
server {
listen 192.168.10.200:80;
server_name www.bbb.com;
access_log log/www.bbb.com.access.log;
charset utf-8;
location /{
root /var/www/html/bbb;
index index.html index.htm;
}
}
nginx -t
systemctl restart nginx
浏览器访问:192.168.10.201:80
192.168.10.200:80
-
注意事项:
-
服务器需配置多个IP(通过网卡别名或虚拟接口)。
-
确保防火墙允许对应IP和端口的流量。
-
3:基于端口的虚拟主机
(80、8080)相同IP地址基于不同的端口
vim /usr/local/nginx/conf/nginx.conf
server {
listen 192.168.10.201:80;
server_name www.aaa.com;
access_log log/www.aaa.com.access.log;
charset utf-8;
location /{
root /var/www/html/aaa;
index index.html index.htm;
}
}
server {
listen 192.168.10.201:8080;
server_name www.bbb.com;
access_log log/www.bbb.com.access.log;
charset utf-8;
location /{
root /var/www/html/bbb;
index index.html index.htm;
}
}
nginx -t
systemctl restart nginx
浏览器访问:192.168.10.201:80
192.168.10.201:8080
-
注意事项:
-
需开放端口防火墙规则。
-
非标准端口可能影响用户体验,常用于测试或内部服务。
-
四:LNMP架构部署及应用
1:编译安装MySQL服务
(1)编译安装MySQL服务,复制配置文件到/etc/下,并把mysql添加到服务,初始化数据库,启动MySQL,并设置密码
简化安装MySQL:dnf -y install mariadb-server
systemctl start mariadb
mysqladmin -uroot passwd 'pwd123'
mysql -uroot -ppwd123
2:安装PHP解析环境
(1)编译安装PHP
dnf -y install gd libxml2-devel libjpeg-devel libpng-devel
MySQL用yum装的
./configure --prefix=/usr/local/php5 --with-gd --with-zlib --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-config-file-path=/usr/local/php5 --enable-mbstring --enable-fpm --with-jpeg-dir=/usr/lib
——回车——
(2)安装后调整
cp php.ini-development /usr/local/php5/php.ini
ln -s /usr/local/php5/bin/* /usr/local/bin/
ln -s /usr/local/php5/sbin/* /usr/local/sbin/
(3)安装ZendGuardLoader
tar zxvf zend-loader-php5.5
cd zend-loader-php5.5
cp 文件/Z /usr/local/php5/lib/php
vim /usr/local/php5/php.ini
添加:
zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so
zend_loader.enable=1
3:配置nginx支持PHP环境
(1)启用php-fpm
cd /usr/local/php5/etc/
cp php-fpm.conf.default.php-fpm.conf
useradd php
vim php-fpm.conf
启动配置文件:/usr/local/sbin/php-fpm
netstat -anpt | grep php-fpm
(2)配置nginx支持PHP解析
vim /usr/local/nginx/conf/nginx.conf
server {
listen 80;
server_name www.bdqn.com;
charset utf-8;
access_log logs/host.access.log main;
location / {
root /var/www/bdqn;
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location /status {
stub_status on;
access_log off;
}
location ~ \.php$ {
root /var/www/html/bdqn;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
}
systemctl restart nginx
(3)PHP页面访问测试
a.浏览器访问测试页(test1)
vi /var/www/bdqn/test1.php
<?php
phpinfo();
?>
b. 浏览器访问测试页(test2)
vi /var/www/bdqn/test2.php
<?php
$link=mysqli_connect('localhost','root','pwd123');
if($link)
echo "恭喜你,数据库连接成功!";
mysqli_close($link);
?>
4:在LNMP平台中部署web应用
(1)部署网站程序代码
[root@localhost ~]# yum -y install unzip
[root@localhost ~]# unzip Discuz_X3.3_SC_UTF8.zip
[root@localhost ~]# mv upload/ /var/www/bdqn/bbs
[root@localhost ~]# chown -R php:php /var/www/bdqn/bbs
(2)创建数据库
[root@localhost ~]# mysql -u root -p
Enter password:
mysql> create database bbs;
mysql> grant all on bbs.* to runbbs@localhost identified by 'bbs@yh123';
(3)安装web网站
用浏览器访问网站:
可以访问最终LNMP页面
1: LNMP结果验证