nginx 核心功能

目录

一、基于授权的访问控制

[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的用户:

bash 复制代码
htpasswd -c /etc/nginx/htpasswd.users testuser

执行该命令后,会提示你输入testuser的密码。

2. 修改 Nginx 主配置文件

要在 Nginx 中启用基于授权的访问控制,需要在配置文件里添加相关配置。以下是示例配置,假设要保护/protected路径:

bash 复制代码
server {
    listen 80;
    server_name example.com;

    location /protected {
        auth_basic "Restricted Access";
        auth_basic_user_file /etc/nginx/htpasswd.users;
    }
}

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

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

可以通过allowdeny指令对特定 IP 地址或 IP 地址段进行访问控制。以下是示例配置

bash 复制代码
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文件中添加域名解析记录:

bash 复制代码
127.0.0.1  site1.example.com
127.0.0.1  site2.example.com

在 Nginx 的网站根目录下创建两个不同的网站目录和文件:

bash 复制代码
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

修改配置文件

bash 复制代码
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 配置文件

bash 复制代码
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. 基于端口的虚拟主机

bash 复制代码
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:

bash 复制代码
sudo apt update
sudo apt install mariadb-server

2. 安装并配置 PHP

编译安装的基本信息

bash 复制代码
sudo apt install php-fpm php-mysql

安装后的调整

编辑/etc/php/7.4/fpm/pool.d/www.conf(根据实际 PHP 版本调整),确保listen配置正确:

bash 复制代码
listen = /run/php/php7.4-fpm.sock

为 PHP 添加 Zend 优化模块

安装opcache

bash 复制代码
sudo apt install php-opcache

编辑/etc/php/7.4/fpm/php.ini(根据实际 PHP 版本调整),启用opcache

bash 复制代码
zend_extension=opcache.so
opcache.enable=1

配置 Nginx 支持 PHP 环境

bash 复制代码
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文件:

bash 复制代码
<?php
phpinfo();
?>

在浏览器中访问http://example.com/info.php,查看 PHP 信息页面。

相关推荐
Matana11117 分钟前
Vmware中主机ip a没有ip地址
服务器·网络·tcp/ip
HIT_Weston26 分钟前
16、【Ubuntu】【VSCode】VSCode 断联问题分析:问题解决
linux·vscode·ubuntu
征尘bjajmd27 分钟前
Java使用okhttp发送get、post请求
java·服务器·数据库
被遗忘的旋律.30 分钟前
Linux驱动开发笔记(十九)——IIC(AP3216C驱动+MPU6050驱动)
linux·驱动开发·笔记
Dreamboat-L2 小时前
使用VMware安装centos的详细流程(保姆级教程)
linux·运维·centos
数字化顾问2 小时前
(114页PPT)华为FusionCloud私有云最佳实践RegionTypeII(附下载方式)
运维·服务器·华为
蓦然回首的风度2 小时前
【运维记录】Centos 7 基础命令缺失
linux·运维·centos
2501_938810112 小时前
共享IP的定义
服务器·网络·tcp/ip
kblj55552 小时前
学习Linux——网络基础管理
linux·网络·学习
前端世界2 小时前
用Python打造智能成绩分析系统:从异常处理到断言验证的全流程实战
服务器·数据库·python