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 安装向导

  1. 访问安装页面
    http://服务器IP/bbs/install/index.php

  2. 填写数据库信息

    • 数据库服务器:127.0.0.1
    • 数据库名:bbs

    • 用户名:runbbs

    • 密码:bbs123

  3. 完成安装
    按提示设置管理员账号,最终生成论坛首页。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值