Nginx 核心功能与 LNMP 架构部署
一、基于授权的访问控制
1.1 功能概述
Nginx 的基于授权的访问控制通过用户名和密码验证机制,限制用户对特定资源的访问。其实现逻辑与 Apache 类似,但配置更简洁,适用于需保护敏感目录或页面的场景(如管理后台)。
1.2 实现步骤
1.生成用户认证文件
- 生成用户认证文件 - 安装 httpd-tools工具包:
 
- 安装 
yum -y install httpd-tools
- 使用 htpasswd创建密码文件:
htpasswd -c /usr/local/nginx/passwd.db test
- -c:创建新文件(若文件已存在需省略此参数)。
-  文件路径为 /usr/local/nginx/passwd.db,用户名为test,需输入两次密码。
2.设置文件权限与所有权
-  确保 Nginx 进程用户(如 nginx)有读取权限:
chmod 400 /usr/local/nginx/passwd.db
chown nginx /usr/local/nginx/passwd.db
3.修改 Nginx 配置文件
在 server 块的 location 中添加认证配置:
location / {
auth_basic "secret"; # 认证提示信息
auth_basic_user_file /usr/local/nginx/passwd.db; # 密码文件路径
}
4.重启服务与测试
nginx -t # 检查语法
systemctl restart nginx
-  访问时浏览器会弹出认证窗口,输入用户名密码后可访问资源。 
二、基于客户端的访问控制
2.1 功能概述
通过客户端 IP 地址限制访问,适用于黑白名单机制(如禁止恶意 IP、允许内网访问)。
2.2 配置规则
-  指令: -  deny IP/IP段:拒绝指定 IP 或网段。
-  allow IP/IP段:允许指定 IP 或网段。
 
-  
-  规则优先级:从上到下匹配,首次匹配后停止后续规则。 
2.3 配置示例
location / {
deny 192.168.10.3; # 拒绝单个 IP
allow 192.168.10.0/24; # 允许整个子网
deny all; # 拒绝其他所有 IP
}
注意:若规则顺序为 allow all; deny 192.168.10.3;,则 deny 失效,因 allow all 已匹配所有请求。
三、Nginx 虚拟主机
3.1 基于域名的虚拟主机
实现步骤:
1.DNS 解析
修改客户端 hosts 文件或 DNS 服务器,将多个域名指向同一 IP(如 192.168.10.101 www.benet.com www.accp.com)。
2.准备网站目录与测试页
mkdir -p /var/www/html/{benet,accp}
echo "www.benet.com" > /var/www/html/benet/index.html
echo "www.accp.com" > /var/www/html/accp/index.html
3.配置 Nginx
在 nginx.conf 中定义多个 server 块:
server {
listen 80;
server_name www.benet.com;
root /var/www/html/benet;
index index.html;
}
server {
listen 80;
server_name www.accp.com;
root /var/www/html/accp;
index index.html;
}
3.2 基于 IP 的虚拟主机
实现步骤:
1.为服务器绑定多个 IP
复制网卡配置文件并修改 IP:
cp ifcfg-ens33 ifcfg-ens33:0
vim ifcfg-ens33:0 # 修改 IPADDR 为 192.168.10.151
nmcli c reload # 重载网络配置
2.配置Nginx
server {
listen 192.168.10.151:80;
server_name www.benet.com;
root /var/www/html/benet;
}
server {
listen 192.168.10.152:80;
server_name www.accp.com;
root /var/www/html/accp;
}
3.3 基于端口的虚拟主机
实现步骤:
1.修改监听端口
server {
listen 8080;
server_name www.benet.com;
root /var/www/html/benet;
}
server {
listen 8888;
server_name www.accp.com;
root /var/www/html/accp;
}
2.访问测试
通过 http://IP:端口 访问不同站点(如 http://192.168.10.101:8080)。
四、LNMP 架构部署
4.1 编译安装 MySQL
1.安装依赖与编译
yum -y install ncurses-devel gcc-c++ cmake
tar -zxvf mysql-5.6.36.tar.gz
cd mysql-5.6.36
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8
make && make install
2.初始化与启动
groupadd mysql
useradd -M -s /sbin/nologin mysql -g mysql
chown -R mysql:mysql /usr/local/mysql
/usr/local/mysql/scripts/mysql_install_db --user=mysql
systemctl start mysqld
mysqladmin -u root password '123.com'
4.2 安装 PHP 解析环境
1.编译 PHP
./configure --prefix=/usr/local/php5 --with-mysql=mysqlnd --enable-fpm
make && make install
2.配置 PHP-FPM
cp php.ini-development /usr/local/php5/php.ini
cp php-fpm.conf.default php-fpm.conf
systemctl start php-fpm
4.3 配置 Nginx 支持 PHP
1.修改 Nginx 配置
location ~ \.php$ {
root /var/www/html;
fastcgi_pass 127.0.0.1:9000; # 转发至 PHP-FPM
fastcgi_index index.php;
include fastcgi.conf;
}
2.测试PHP解析
                创建 test.php:
<?php phpinfo(); ?>
访问 http://服务器IP/test.php,显示 PHP 信息页面即表示配置成功。
五、LNMP 应用案例:部署 Discuz! 论坛
5.1 部署代码与数据库
1.解压代码并配置权限
unzip Discuz_X3.3_SC_UTF8.zip
mv upload/* /var/www/html/bbs
chown -R php:php /var/www/html/bbs
2.创建数据库与用户
CREATE DATABASE bbs;
GRANT ALL ON bbs.* TO 'runbbs'@'localhost' IDENTIFIED BY 'bbs123';
5.2 安装向导
-  访问安装页面
 http://服务器IP/bbs/install/index.php
-  填写数据库信息-  数据库服务器:127.0.0.1
-  数据库名: bbs
-  用户名: runbbs
-  密码: bbs123
 
-  
-  完成安装
 按提示设置管理员账号,最终生成论坛首页。
