目录
(2)修改密码文件权限为400,将所有者改为nginx,设置Nginx的运行用户能够读取
(3)修改主配置文件niginx.conf,添加相应认证配置项
一:基于授权的访问控制
1.基于授权的访问控制简介
Nginx 与 Apahce/样,可以实现基手用户提权的动问控制,当客户端想要访问相应网站
或者目录时,要求用户输入用户名和密码才能正常访间,配置步骤与 Apache 基本一致
概括为以下几个步骤。
- 生成用户密码认证文件。
- 修改主配置文件相对应目录,添加认证配置项。
- 重启服务,访问测试.
2.基于授权的访问控制步骤
(1)使用htpasswd 生成用户认证文件
htpasswd
是一个用于创建和管理用户认证文件的工具,该文件包含用户名和加密后的密码。在终端中执行以下命令来创建或更新认证文件:
htpasswd -c /etc/nginx/.htpasswd username
-c
选项表示创建一个新的认证文件,如果文件已存在,它将被覆盖。/etc/nginx/.htpasswd
是认证文件的路径,你可以根据需要修改。username
是你要创建的用户名,执行命令后会提示你输入密码。
(2)修改密码文件权限为400,将所有者改为nginx,设置Nginx的运行用户能够读取
chmod 400 /etc/nginx/.htpasswd
chown nginx:nginx /etc/nginx/.htpasswd
chmod 400
确保只有文件所有者(这里是nginx
)能够读取该文件。chown nginx:nginx
将文件的所有者和所属组都设置为nginx
。
(3)修改主配置文件niginx.conf,添加相应认证配置项
打开 nginx.conf
文件,通常位于 /etc/nginx/nginx.conf
或 /etc/nginx/conf.d/default.conf
,在需要进行访问控制的位置添加以下配置:
location /protected {
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/.htpasswd;
}
location /protected
表示对/protected
路径下的所有资源进行访问控制,你可以根据需要修改路径。auth_basic "Restricted Access"
定义了认证提示信息,当用户访问受保护的资源时,浏览器会弹出一个对话框,显示该提示信息。auth_basic_user_file /etc/nginx/.htpasswd
指定了认证文件的路径。
(4)检测语法,重启服务
在修改配置文件后,需要检测语法是否正确,并重启 Nginx 服务使配置生效:
nginx -t
systemctl restart nginx
nginx -t
用于检测 Nginx 配置文件的语法是否正确。systemctl restart nginx
用于重启 Nginx 服务。
(5)用浏览器访问网址,重启服务
打开浏览器,访问受保护的网址(例如 http://your-server/protected
),浏览器会弹出一个认证对话框,要求你输入用户名和密码。输入之前创建的用户名和密码,如果输入正确,你将能够访问受保护的资源。
二:基于客户端的访问控制
1.基于客户端的访问控制简介
基于客户端的访问控制是通过客户端IP 地址,决定是否允许对页面访问。Nginx基于客户端的访问控制要比 Apache简单,规则如下。
- deny IP/P段:拒绝某个IP或IP段的客户端访问。
- allow 1P/P 段:允许某个P或IP段的客户端访间。
- 规则从上往下执行,如匹配则停止,不再往下匹配。
2.基于客户端的访问控制步骤
(1)修改主配置文件nginx.conf,添加相应配置项
修改主配置文件nginx.conf,添加相应配置项
location / {
root html;
# index index.html index.htm; auth_basic "secret";
# auth_basic_usefile /usr/local/nginx/passwd.db;deny 192.168.10.3;
allow all;
}
三:Nginx 虚拟主机
1.基于域名的虚拟主机
利用虚拟主机,不用为每个解运行的网的提供一台单独的Ngin服务器或单独运行组Nginx进程,虚拟主机提筷了在同一合服务器,同一组Nginx进程上运行多个网鳞的功能。跟 Apache一-样,NEin×也向以配理多种实型的虚拟主机。分别是基于IP的虚拟主机、基于域名的角拟主机、基于缩口的虚拟主机
使用Ngin×搭糖虚拽士机服务器时,每个鹿打Weo站点据有狼的"sorvere”配理段。各自监听的1P地址、端口号可以单独指定,当然网站名称也是不同的。
(1)设置客户端域名解析
在客户端的 hosts
文件(Windows 系统位于 C:\Windows\System32\drivers\etc\hosts
,Linux 系统位于 /etc/hosts
)中添加域名与服务器 IP 地址的映射,示例如下:
192.168.1.100 example1.com
192.168.1.100 example2.com
(2)准备各个网站的目录和测试首页
为每个虚拟主机创建对应的目录,并且添加测试首页:
mkdir -p /var/www/example1.com/html
mkdir -p /var/www/example2.com/html
echo "This is example1" > /var/www/example1.com/html/index.html
echo "This is example2" > /var/www/example2.com/html/index.html
(3)修改配置文件
在 nginx.conf
或者 sites - available
目录下的配置文件中添加如下配置:
server {
listen 80;
server_name example1.com;
root /var/www/example1.com/html;
index index.html;
}
server {
listen 80;
server_name example2.com;
root /var/www/example2.com/html;
index index.html;
}
2.基于IP 的虚拟主机
(1)为服务器设置多个IP地址
在 Linux 系统中,可通过修改网络配置文件(如 /etc/network/interfaces
)来添加多个 IP 地址:
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
auto eth0:1
iface eth0:1 inet static
address 192.168.1.101
netmask 255.255.255.0
(2)修改Nginx 的配置文件,使基于IP的虚拟主机生效
server {
listen 192.168.1.100:80;
root /var/www/site1/html;
index index.html;
}
server {
listen 192.168.1.101:80;
root /var/www/site2/html;
index index.html;
}
(3)访问两个IP网站,测试页面是否生效
在浏览器中分别输入 http://192.168.1.100
和 http://192.168.1.101
,查看是否能正常访问对应的页面。
3.基于端口的虚拟主机
(1)选择系统中不使用的端口,多个端口映射到同一IP地址
假设选择 8080
和 8081
端口,确保这两个端口未被其他程序占用。
(2)检查端口是否运行正常
可使用 netstat -tuln
命令查看端口占用情况
(3)分别访问2个端口地址
在 Nginx 配置文件中添加如下内容:
server {
listen 8080;
root /var/www/port8080/html;
index index.html;
}
server {
listen 8081;
root /var/www/port8081/html;
index index.html;
}
在浏览器中分别输入 http://your - server - ip:8080
和 http://your - server - ip:8081
进行访问测试。
四:LNMP 架构部署及应用
1.编译安装MYSQL服务
(1)编译安装MYSQL
wget https://dev.mysql.com/get/Downloads/MySQL - 8.0/mysql - 8.0.26.tar.gz
tar -zxvf mysql - 8.0.26.tar.gz
cd mysql - 8.0.26
cmake. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc
make && make install
(2)复制配置文件到/etc下,并把MYSQL添加到服务
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 mysql
(3)初始化数据库
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
(4)启动MySQL,并设置密码
service mysqld start
/usr/local/mysql/bin/mysql_secure_installation
2.安装PHP解析环境
(1)编译安装PHP
get https://www.php.net/distributions/php - 8.0.10.tar.gz
tar -zxvf php - 8.0.10.tar.gz
cd php - 8.0.10
./configure --prefix=/usr/local/php --with - mysql=/usr/local/mysql --with - mysqli=/usr/local/mysql/bin/mysql_config --with - pdo - mysql=/usr/local/mysql --with - openssl --enable - mbstring --enable - fpm
make && make install
(2)安装后调整
cp php.ini - production /usr/local/php/lib/php.ini
cp /usr/local/php/etc/php - fpm.conf.default /usr/local/php/etc/php - fpm.conf
cp /usr/local/php/etc/php - fpm.d/www.conf.default /usr/local/php/etc/php - fpm.d/www.conf
(3)安装ZendGuardLoader
wget https://downloads.zend.com/guard/7.0.0/zend-loader - php8.0 - linux - x86_64.tar.gz
tar -zxvf zend - loader - php8.0 - linux - x86_64.tar.gz
echo "zend_extension=/path/to/zend_loader.so" >> /usr/local/php/lib/php.ini
3.配置Nginx 支持PHP环境
(1)启用php-fpm 进程
/usr/local/php/sbin/php - fpm
(2)配置Nginx支持PHP解析
在 nginx.conf
中添加如下配置:
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
(3)PHP页面访问测试
在网站根目录下创建 test.php
文件:
<?php
phpinfo();
?>
在浏览器中访问 http://your - server - ip/test.php
,查看是否能正常显示 PHP 信息页面。
五:在LNMP平台中部署Web 应用
1.下载并部署程序代码
wget https://example.com/your - web - app.zip
unzip your - web - app.zip -d /var/www/your - web - app
2.创建数据库
登录 MySQL:
mysql -u root -p
在 MySQL 中创建数据库:
CREATE DATABASE your_database_name;
3.安装Web 应用
打开浏览器,访问 http://your - server - ip/your - web - app
,按照安装向导的提示,输入数据库信息等完成安装。