目录
[1. 基于授权的访问控制简介](#1. 基于授权的访问控制简介)
[2. 基于授权的访问控制步骤](#2. 基于授权的访问控制步骤)
[1. 基于客户机端的访问控制简介](#1. 基于客户机端的访问控制简介)
[2. 基于客户端的访问控制步骤](#2. 基于客户端的访问控制步骤)
[三、Nginx 虚拟主机](#三、Nginx 虚拟主机)
[1. 基于域名的虚拟主机](#1. 基于域名的虚拟主机)
[2. 基于 IP 的虚拟主机](#2. 基于 IP 的虚拟主机)
[3. 基于端口的虚拟主机](#3. 基于端口的虚拟主机)
[四、LNMP 架构部署及应用](#四、LNMP 架构部署及应用)
[1. 编译安装 MySQL 服务](#1. 编译安装 MySQL 服务)
[2. 安装PHP解析环境](#2. 安装PHP解析环境)
[3. 配置配置Nginx支持PHP环境](#3. 配置配置Nginx支持PHP环境)
[4. 关联LNMP,部署Web应用](#4. 关联LNMP,部署Web应用)
一、基于授权的访问控制
1. 基于授权的访问控制简介
- 概述:Nginx 与 Apache 一样,可以实现基于用户授权的访问控制,当客户端想要访问相应网站或者目录时,要求用户输入用户名和密码才能正常访问
- 步骤:
- 生成用户密码认证文件 ------》
- 修改主配置文件相应对应目录,添加认证配置项 ------》
- 重启服务,访问测试
2. 基于授权的访问控制步骤
(1)使用 htpasswd 生成用户认证文件
- 安装 httpd-tools 软件包
bashyum -y install httpd-tools
- 生成认证文件
bashhtpasswd -c /usr/local/nginx/passwd.db test # test 是用户名 cat /usr/local/nginx/passwd.db #查看生成用户和密码的密文
(2)修改密码文件权限
bash
chmod 400 /usr/local/nginx/passwd.db #权限为400
chown nginx /usr/local/nginx/passwd.db #所有者改为nginx
ll -d /usr/local/nginx/passwd.db #查看
(3)修改主配置文件 nginx.conf ,添加相应的认证配置项
bash
vim /usr/local/nginx/conf/nginx.conf
server {
listen 80;
server_name example.com;
location /admin {
auth_basic "Restricted Area"; # 启用认证,显示提示信息
auth_basic_user_file /etc/nginx/.htpasswd; # 指定密码文件路径
# 其他配置...
}
}
(4)检测语法、重启服务
nginx -t #检测是否错误
systemctl restart nginx #重启
(5)用浏览器访问网址,验证控制效果

二、基于客户端的访问控制
1. 基于客户机端的访问控制简介
基于客户端的访问控制通过 IP 地址 或 子网段 限制访问权限,支持以下两种模式:
-
白名单模式:仅允许指定 IP 访问,其他全部拒绝。
-
黑名单模式:仅拒绝指定 IP,其他全部允许。
规则:
- deny IP/IP 段:拒绝某个IP或IP段的客户端访问。
- allow IP/IP段:允许某个IP或IP段的客户端访问。
- 规则从上往下执行,如匹配则停止,不再往下匹配
2. 基于客户端的访问控制步骤
bash
server {
listen 80;
server_name example.com;
location /secure {
# 白名单示例:允许 192.168.1.0/24 和 10.0.0.5,拒绝其他所有
allow 192.168.1.0/24;
allow 10.0.0.5;
deny all;
# 黑名单示例:拒绝特定 IP,允许其他所有
# deny 203.0.113.1;
# deny 198.51.100.0/24;
# allow all;
# 其他配置...
}
}
三、Nginx 虚拟主机
1. 基于域名的虚拟主机
场景 :多个域名解析到同一 IP 地址,Nginx 根据 Host
头区分请求目标
步骤:
bash
1.创建站点目录,在目录下创建测试文件
mkdir -p /var/www/html/目录名
vim index.html
bash
2.在配置文件(/usr/local/nginx/conf/nginx.conf)中添加"server"模块,用于设置站点配置
# 网站1:www.benet.com
server {
listen 80;
server_name www.example.com; #域名
access_log logs/www/benet.com.access.log; #记录日志文件位置
index index.html;
location / {
root /var/www/html/benet #站点目录路径
try_files $uri $uri/ =404;
}
}
# 网站2:www.blog.com
server {
listen 80;
server_name www.blog.com;
access_log logs/www/blog.com.access.log;
index index.html;
location / {
root /var/www/html/blog;
try_files $uri $uri/ =404;
}
}
2. 基于 IP 的虚拟主机
场景:服务器有多个 IP 地址,每个 IP 绑定独立网站。
bash
# 绑定到 IP 192.168.1.100
server {
listen 192.168.1.100:80;
server_name _; # 无需指定域名
root /var/www/site1;
index index.html;
}
# 绑定到 IP 192.168.1.200
server {
listen 192.168.1.200:80;
server_name _;
root /var/www/site2;
index index.html;
}
3. 基于端口的虚拟主机
场景:同一 IP 的不同端口提供不同服务(如 80 端口提供 Web,8080 端口提供管理后台)。
bash
# 监听 80 端口(HTTP 默认端口)
server {
listen 80;
server_name example.com;
root /var/www/main;
index index.html;
}
# 监听 8080 端口(管理后台)
server {
listen 8080;
server_name example.com;
root /var/www/admin;
index index.html;
# 可选:限制访问 IP
allow 192.168.1.0/24;
deny all;
}
四、LNMP 架构部署及应用
1. 编译安装 MySQL 服务
bash
简化版mariadb
1.下载mariadb(yum -y install mariadb-server)
2.重启服务 systemctl start mariadb
3.生成密码 mysqladmin -uroot password '密码'
2. 安装PHP解析环境
(1)安装PHP
bash
yum -y install gd libxml2-devel libjpeg-devel libpng-devel #下载php所需要的依赖包
tar zxf php-5.5.38.tar.gz #解压缩文件
cd php
./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 #编译安装
make && make install
#安装后调整
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/ #软连接
(2)安装ZendGuardLoader
bash
tar zxf zend-loader-php5.5-linux-x86_64_update1.tar.gz
ls
cp zend-loader-php5.5-linux-x86_64/ZendGuardLoader.so /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进程
bash
[root@localhost ~]# cd /usr/local/php5/etc
[root@localhost etc]# cp php-fpm.conf.default php-fpm.conf
[root@localhost etc]# useradd -M -s /sbin/nologin php
[root@localhost etc]# vi /usr/local/php5/etc/php-fpm.conf
pid = run/php-fpm.pid
user = php
group = php
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
[root@localhost etc]# /usr/local/sbin/php-fpm
[root@localhost etc]# netstat -anpt | grep php-fpm
[root@localhost etc]# systemctl restart nginx
(2)配置Nginx支持PHP解析
bash
[root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf
server {
listen 80;
server_name www.bt.com;
charset utf-8;
access_log logs/host.access.log ;
location / {
root /var/www/html;
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;
}
#添加以下php配置
location ~ \.php$ {
root /var/www/html/;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf;
}
}
[root@localhost ~]# systemctl restart nginx
(3) PHP页面的测试
bash
a.浏览器访问测试页(test1)
[root@localhost ~]# vi /var/www/html/test1.php
<?php
phpinfo();
?>
b. 浏览器访问测试页(test2)
[root@localhost ~]# vi /var/www/html/test2.php
<?php
$link=mysqli_connect('127.0.0.1','root','pwd123');
if($link)
echo "恭喜你,数据库连接成功!";
mysqli_close($link);
?>
/usr/local/php5/sbin/php-fpm #启动php
netstat -anpt |grep php #查看php启动没有
访问会乱码
vim /usr/local/nginx/conf/nginx.conf
charset utf-8;
更改了test2.php的ip 127.0.0.1 改为192.168.10.101 访问失败 给root一个权限
mysql -uroot -ppwd123 #登录MySQL
grant all on *.* to root@'%' identified by 'pwd123';
grant all on *.* to root@'localhost' identified by 'pwd123'; #
访问URL 192.168.10.101/test1/2.php
4. 关联LNMP,部署Web应用
bash
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网站
用浏览器访问网站:
www.bdqn.com/bbs
