目录
[1. 使用 htpasswd 生成用户认证文件](#1. 使用 htpasswd 生成用户认证文件)
[2. 修改 Nginx 主配置文件](#2. 修改 Nginx 主配置文件)
[三、Nginx 虚拟主机](#三、Nginx 虚拟主机)
[1. 基于域名的虚拟主机](#1. 基于域名的虚拟主机)
[2. 基于 IP 的虚拟主机](#2. 基于 IP 的虚拟主机)
[3. 基于端口的虚拟主机](#3. 基于端口的虚拟主机)
[四、LNMP 架构部署及应用](#四、LNMP 架构部署及应用)
[1. 安装 MariaDB](#1. 安装 MariaDB)
[2. 安装并配置 PHP](#2. 安装并配置 PHP)
一、基于授权的访问控制
1. 使用 htpasswd 生成用户认证文件
htpasswd
可用于创建和管理用于基本认证的用户密码文件。执行以下命令来创建一个名为htpasswd.users
的文件,并添加一个名为testuser
的用户:
bashhtpasswd -c /etc/nginx/htpasswd.users testuser
执行该命令后,会提示你输入
testuser
的密码。
2. 修改 Nginx 主配置文件
要在 Nginx 中启用基于授权的访问控制,需要在配置文件里添加相关配置。以下是示例配置,假设要保护
/protected
路径:
bashserver { listen 80; server_name example.com; location /protected { auth_basic "Restricted Access"; auth_basic_user_file /etc/nginx/htpasswd.users; } }
输入用户名及密码进行访问
二、基于客户端的访问控制
可以通过allow
和deny
指令对特定 IP 地址或 IP 地址段进行访问控制。以下是示例配置
bashserver { listen 80; server_name example.com; # 只允许特定 IP 地址访问 allow 192.168.1.0/24; deny all; location / { # 其他配置 } }
三、Nginx 虚拟主机
Nginx 也可以配置多种类型的虚拟主机,分别是基于 IP 的虚拟主机、基于域名的虚拟主机、基于端口的虚拟主机。
使用 Nginx 搭建虚拟主机服务器时,每个虚拟 web 站点拥有独立的"server{}"配置段,各自监听的 IP 地址、端口号可以单独指定,当然网站名称也是不同的
1. 基于域名的虚拟主机
设置客户端域名解析并准备网站
在客户端的/etc/hosts
文件中添加域名解析记录:
bash127.0.0.1 site1.example.com 127.0.0.1 site2.example.com
在 Nginx 的网站根目录下创建两个不同的网站目录和文件:
bashmkdir -p /var/www/site1 mkdir -p /var/www/site2 echo "This is site 1" > /var/www/site1/index.html echo "This is site 2" > /var/www/site2/index.html
修改配置文件
bashserver { listen 80; server_name site1.example.com; root /var/www/site1; index index.html; } server { listen 80; server_name site2.example.com; root /var/www/site2; index index.html; }
在浏览器中访问
http://site1.example.com
和http://site2.example.com
,分别查看不同的网站内容。
2. 基于 IP 的虚拟主机
一台主机如果有多个 IP 地址,可以设置每一个 IP 对应一个站点。主机安装多个网卡可以有多个 IP,这里采用虚拟 IP 的方式使主机有多个 IP。
假设你要为服务器添加两个额外的 IP 地址192.168.1.101
和192.168.1.102
,可编辑网络配置文件。
修改 Nginx 配置文件
bashserver { listen 192.168.1.101:80; root /var/www/ip_site1; index index.html; } server { listen 192.168.1.102:80; root /var/www/ip_site2; index index.html; }
重新加载 Nginx 配置后,通过不同的 IP 地址访问对应的网站。
3. 基于端口的虚拟主机
bashserver { listen 8080; root /var/www/port_site; index index.html; }
客户端验证时,在浏览器中访问
http://example.com:8080
来查看网站内容。
四、LNMP 架构部署及应用
LNMP 平台是目前应用最为广泛的网站服务器架构,
- L:linux系统
- N:nginx服务
- M:mysql服务
- P:php认证
1. 安装 MariaDB
使用联网的方式快速安装 MariaDB:
bashsudo apt update sudo apt install mariadb-server
2. 安装并配置 PHP
编译安装的基本信息
bashsudo apt install php-fpm php-mysql
安装后的调整
编辑/etc/php/7.4/fpm/pool.d/www.conf
(根据实际 PHP 版本调整),确保listen
配置正确:
bashlisten = /run/php/php7.4-fpm.sock
为 PHP 添加 Zend 优化模块
安装opcache
:
bashsudo apt install php-opcache
编辑
/etc/php/7.4/fpm/php.ini
(根据实际 PHP 版本调整),启用opcache
:
bashzend_extension=opcache.so opcache.enable=1
配置 Nginx 支持 PHP 环境
bashserver { listen 80; server_name example.com; root /var/www/html; index index.php index.html; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
准备 PHP 页面代码
在/var/www/html
目录下创建一个info.php
文件:
bash<?php phpinfo(); ?>
在浏览器中访问
http://example.com/info.php
,查看 PHP 信息页面。