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

nginx 核心功能

目录

一、基于授权的访问控制

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;}
}

输入用户名及密码进行访问

二、基于客户端的访问控制

可以通过allowdeny指令对特定 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.comhttp://site2.example.com,分别查看不同的网站内容。

2. 基于 IP 的虚拟主机

一台主机如果有多个 IP 地址,可以设置每一个 IP 对应一个站点。主机安装多个网卡可以有多个 IP,这里采用虚拟 IP 的方式使主机有多个 IP。

假设你要为服务器添加两个额外的 IP 地址192.168.1.101192.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 信息页面。

http://www.xdnf.cn/news/2870.html

相关文章:

  • Python异常抛出指南
  • vue3使用<el-date-picker分别设置开始时间和结束时间时,设置开始时间晚于当前时间,开始时间早于结束时间,结束时间晚于开始时间
  • 完整的 SSL 证书生成与 Spring Boot 配置流程
  • n8n部署docker本地化备份和数据持久化和迁移问题
  • timerfd定时器时间轮定时器
  • 政策支持与市场驱动:充电桩可持续发展的双轮引擎
  • Linux权限管理
  • 可解释人工智能(XAI):让机器决策透明化
  • 【Java学习笔记】克隆对象
  • yum install 失败
  • JavaScript高级进阶(四)
  • Easy系列PLC高速计数器比较指令
  • 乐理学习笔记(一)---节拍与音符
  • FTTR与普通家庭网络
  • tree命令
  • terraform local-exec与remote-exec详解
  • 爱芯元智/芯昇,XS9950A,1 通道AHD模拟视频
  • 记录一下QA(from deepseek)
  • WHAT - 《成为技术领导者》思考题(第三章)
  • 大数据应用开发和项目实战-Matplotlib
  • pyautogui基础操作
  • 学成在线。。。
  • USB3.0 、 PCIE、RFSoC、NVMe 新课程课程直播发布公告
  • 【技术笔记】通过Cadence Allegro创建一个PCB封装(以SOT23为例)
  • 4月28日星期一今日早报简报微语报早读
  • TF_LOG 配置及级别详解
  • Vue3 + Element-Plus + 阿里云文件上传
  • AD16制作3D封装元件
  • BZOJ.疯狂的馒头
  • uniswap getTickAtSqrtPrice 方法解析