当前位置: 首页 > news >正文

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

相关文章:

  • socket套接字-UDP(下)
  • Windows权限与icacls命令详解
  • Latex全面汇总
  • Express 文件上传不迷路:req.files 一次性讲明白
  • 如何在本地部署小智服务器:从源码到全模块运行的详细步骤
  • 桂链:使用Fabric的测试网络
  • 单链表详解
  • css3伸缩盒模型第一章(主轴以及伸缩盒模型)
  • 单片机-89C51部分:9、串行口通讯
  • Gitea windows服务注册,服务启动、停止、重启脚本
  • MySQL慢查询日志分析方法
  • BLE技术,如何高效赋能IoT短距无线通信?
  • 应用安全系列之四十七:NoSQL注入
  • 14.外观模式:思考与解读
  • IoTDB数据库建模与资源优化指南
  • 从拒绝采样到强化学习,大语言模型推理极简新路径!
  • Tailwind CSS 实战:基于 Kooboo 构建企业官网页面(三)
  • Webshell管理工具的流量特征
  • Selenium 与 Playwright:浏览器自动化工具的深度对比
  • python jupyter notebook
  • 十四届全国人大常委会第十五次会议在京闭幕
  • 徐徕任上海浦东新区副区长,此前已任区委常委
  • 解放日报:中国大模型企业的发展机遇已经到来
  • 科学家为AI模型设置“防火墙”,以防止被不法分子滥用
  • 秦洪看盘|上市公司业绩“排雷”近尾声,A股下行压力趋缓
  • 中方发布《不跪!》视频传递何种信息?外交部回应