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
-
-
完成安装
按提示设置管理员账号,最终生成论坛首页。