目录
[三、Nginx 虚拟主机](#三、Nginx 虚拟主机)
[(二)基于 IP 的虚拟主机](#(二)基于 IP 的虚拟主机)
[四、LNMP 架构部署](#四、LNMP 架构部署)
[(一)编译安装 MySQL](#(一)编译安装 MySQL)
[(二)安装 PHP 解析环境](#(二)安装 PHP 解析环境)
[(三)配置 Nginx 支持 PHP](#(三)配置 Nginx 支持 PHP)
[(四)部署 Web 应用(以 Discuz 为例)](#(四)部署 Web 应用(以 Discuz 为例))
一、基于授权的访问控制
(一)功能简介
Nginx 支持通过用户名和密码对访问特定目录或网站的客户端进行认证,配置逻辑与 Apache 相似,核心步骤包括生成认证文件、修改配置和重启服务。
(二)配置步骤
- 生成用户密码认证文件
-
首先安装
httpd-tools
(包含htpasswd
工具):yum -y install httpd-tools
-
创建认证文件并添加用户(
-c
表示首次创建文件,路径为/usr/local/nginx/passwd.db
,用户名为test
):htpasswd -c /usr/local/nginx/passwd.db test
- 设置文件权限与所有者
-
确保只有 Nginx 运行用户可读取文件(假设 Nginx 用户为
nginx
):chmod 400 /usr/local/nginx/passwd.db # 只读权限
chown nginx /usr/local/nginx/passwd.db # 所有者设为 nginx
-
修改 Nginx 主配置文件
编辑nginx.conf
,在目标location
块中添加认证配置:server {
listen 80;
server_name localhost;location / { root html; index index.html index.htm; auth_basic "secret"; # 认证提示信息 auth_basic_user_file /usr/local/nginx/passwd.db; # 认证文件路径 }
}
-
验证配置并重启服务
nginx -t # 检测语法正确性
systemctl restart nginx # 重启 Nginx 使配置生效 -
访问测试 浏览器输入服务器 IP(如
http://192.168.10.101
),会弹出登录框,输入正确用户名密码即可访问。

二、基于客户端的访问控制
(一)功能简介
通过 deny
和 allow
规则,根据客户端 IP 或 IP 段控制访问,规则按顺序执行,匹配即停止。
(二)配置步骤
在 location
块中添加 IP 过滤规则(示例:拒绝 192.168.10.3
,允许其他所有 IP):
location / {
root html;
index index.html index.htm;
deny 192.168.10.3; # 拒绝单个 IP
allow all; # 允许所有 IP(需放在拒绝规则之后)
}
保存配置后,执行 nginx -t
和 systemctl restart nginx
生效。
三、Nginx 虚拟主机
(一)基于域名的虚拟主机
-
客户端域名解析
修改本地hosts
文件(Windows 在C:\Windows\System32\drivers\etc\hosts
,Linux 在/etc/hosts
),添加:192.168.10.101 www.benet.com
192.168.10.101 www.accp.com -
准备网站目录与测试页面
mkdir -p /var/www/html/benet /var/www/html/accp # 创建站点目录
echo "www.aaaaaaaa.com" > /var/www/html/benet/index.html # 生成测试首页
echo "www.bbbbbbbbb.com" > /var/www/html/accp/index.html -
配置 Nginx 虚拟主机
在nginx.conf
中添加两个server
块,分别绑定不同域名和根目录:server {
listen 80;
server_name www.benet.com;
access_log logs/www.benet.com.access.log;
charset utf-8;location / { root /var/www/html/benet; index index.html; }
}
server {
listen 80;
server_name www.accp.com;
access_log logs/www.accp.com.access.log;
charset utf-8;location / { root /var/www/html/accp; index index.html; }
}
-
测试访问 浏览器输入
http://www.benet.com
和http://www.accp.com
,应显示对应站点内容。


(二)基于 IP 的虚拟主机
-
添加虚拟 IP 地址
通过复制网卡配置文件创建虚拟网卡(以ens33
为例):cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0 # 创建第一个虚拟 IP 配置
cp ifcfg-ens33 ifcfg-ens33:1 # 创建第二个虚拟 IP 配置
编辑 ifcfg-ens33:0
和 ifcfg-ens33:1
,分别设置 IPADDR
为 192.168.10.151
和 192.168.10.152
,其他参数保持一致(如网关、DNS)。
重启网络服务使配置生效:
nmcli connection reload
nmcli connection up ens33
-
配置 Nginx 绑定 IP
在nginx.conf
中为每个 IP 绑定独立的server
块:server {
listen 192.168.10.151:80;
server_name www.benet.com;
# 其他配置(如 root 目录)
}server {
listen 192.168.10.152:80;
server_name www.accp.com;
# 其他配置
}
(三)基于端口的虚拟主机
在 nginx.conf
中为同一 IP 分配不同端口(如 8080 和 8888):
server {
listen 192.168.10.101:8080;
server_name www.benet.com;
# 端口 8080 站点配置
}
server {
listen 192.168.10.101:8888;
server_name www.accp.com;
# 端口 8888 站点配置
}
访问时需在 URL 中添加端口(如 http://192.168.10.101:8080
)。
四、LNMP 架构部署
(一)编译安装 MySQL
-
准备依赖环境
yum install -y autoconf ncurses-devel gcc-c++ perl-Module-Install cmake
-
解压并编译 MySQL
tar -zxvf mysql-5.6.36.tar.gz
cd mysql-5.6.36
cmake
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DWITH_EXTRA_CHARSETS=all
-DSYSCONFDIR=/etc
make && make install -
初始化与配置
cp support-files/my-default.cnf /etc/my.cnf # 复制配置文件
cp support-files/mysql.server /etc/init.d/mysqld # 添加服务脚本
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld && chkconfig mysqld on # 加入系统服务
echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile # 添加环境变量
. /etc/profile # 立即生效 -
创建用户与初始化数据库
groupadd mysql && useradd -M -s /sbin/nologin mysql -g mysql
chown -R mysql:mysql /usr/local/mysql
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
systemctl start mysqld # 启动服务
mysqladmin -u root password '123.com' # 设置 root 密码
(二)安装 PHP 解析环境
-
安装依赖库
yum -y install gd libxml2-devel libjpeg-devel libpng-devel zlib-devel
-
编译 PHP
tar -zxvf php-5.5.38.tar.gz
cd php-5.5.38
./configure
--prefix=/usr/local/php5
--with-gd
--with-zlib
--with-mysql=/usr/local/mysql
--with-mysqli=/usr/local/mysql/bin/mysql_config
--with-config-file-path=/usr/local/php5
--enable-mbstring
--enable-fpm
--with-jpeg-dir=/usr/lib
make && make install
(三)配置 Nginx 支持 PHP
-
启动 php-fpm 服务
cd /usr/local/php5/etc/
cp php-fpm.conf.default php-fpm.conf # 复制配置模板
useradd -M -s /sbin/nologin php # 创建 php 专用用户
vim php-fpm.conf # 修改用户、进程数等配置(如 user=php, group=php)
/usr/local/sbin/php-fpm # 启动服务 -
Nginx 配置 PHP 解析
在server
块中添加 PHP 解析规则(匹配.php
文件):location ~ .php$ {
root /var/www/html;
fastcgi_pass 127.0.0.1:9000; # 指向 php-fpm 监听端口
fastcgi_index index.php;
include fastcgi.conf;
} -
测试 PHP 页面
创建测试文件test1.php
(输出 PHP 信息)和test2.php
(测试数据库连接),访问http://服务器 IP/test1.php
应显示 PHP 环境信息。
(四)部署 Web 应用(以 Discuz 为例)
-
准备程序文件
yum -y install unzip
unzip Discuz_X3.3_SC_UTF8.zip
mkdir -p /var/www/html/bbs && mv upload/* /var/www/html/bbs
chown -R php:php /var/www/html/bbs # 赋予 php 用户权限 -
创建数据库
mysql -uroot -p # 登录 MySQL
create database bbs; # 创建数据库
grant all on bbs.* to runbbs@'127.0.0.1' identified by 'bbs123'; # 授权本地访问
grant all on bbs.* to runbbs@'localhost' identified by 'bbs123'; -
初始化安装 浏览器访问
http://服务器 IP/bbs/install/index.php
,按向导完成安装,配置数据库信息即可。

总结
本文详细介绍了 Nginx 的两种访问控制机制(用户认证与 IP 过滤)、三种虚拟主机配置(域名、IP、端口)以及 LNMP 架构的完整部署流程。通过这些配置,可实现服务器资源的安全控制、多站点高效管理及动态 Web 应用的稳定运行。实际应用中,需根据业务需求调整参数(如并发连接数、缓存策略),并定期更新组件以保障安全性和性能。