目录
一、基于授权的访问控制
1. 使用 htpasswd 生成用户认证文件
2. 修改 Nginx 主配置文件
二、基于客户端的访问控制
三、Nginx 虚拟主机
1. 基于域名的虚拟主机
2. 基于 IP 的虚拟主机
3. 基于端口的虚拟主机
四、LNMP 架构部署及应用
1. 安装 MariaDB
2. 安装并配置 PHP
一、基于授权的访问控制
1. 使用 htpasswd 生成用户认证文件
htpasswd
可用于创建和管理用于基本认证的用户密码文件。执行以下命令来创建一个名为htpasswd.users
的文件,并添加一个名为testuser
的用户:
htpasswd -c /etc/nginx/htpasswd.users testuser
执行该命令后,会提示你输入
testuser
的密码。
2. 修改 Nginx 主配置文件
要在 Nginx 中启用基于授权的访问控制,需要在配置文件里添加相关配置。以下是示例配置,假设要保护
/protected
路径:server {listen 80;server_name example.com;location /protected {auth_basic "Restricted Access";auth_basic_user_file /etc/nginx/htpasswd.users;} }
输入用户名及密码进行访问
二、基于客户端的访问控制
可以通过allow
和deny
指令对特定 IP 地址或 IP 地址段进行访问控制。以下是示例配置
server {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
文件中添加域名解析记录:
127.0.0.1 site1.example.com 127.0.0.1 site2.example.com
在 Nginx 的网站根目录下创建两个不同的网站目录和文件:
mkdir -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
修改配置文件
server {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 配置文件
server {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. 基于端口的虚拟主机
server {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:
sudo apt update sudo apt install mariadb-server
2. 安装并配置 PHP
编译安装的基本信息
sudo apt install php-fpm php-mysql
安装后的调整
编辑/etc/php/7.4/fpm/pool.d/www.conf
(根据实际 PHP 版本调整),确保listen
配置正确:
listen = /run/php/php7.4-fpm.sock
为 PHP 添加 Zend 优化模块
安装opcache
:
sudo apt install php-opcache
编辑
/etc/php/7.4/fpm/php.ini
(根据实际 PHP 版本调整),启用opcache
:zend_extension=opcache.so opcache.enable=1
配置 Nginx 支持 PHP 环境
server {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
文件:
<?php phpinfo(); ?>
在浏览器中访问
http://example.com/info.php
,查看 PHP 信息页面。