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 信息页面。

相关推荐
嵌入式在学无敌大神35 分钟前
Linux网络编程:TCP多进程/多线程并发服务器详解
linux·服务器·网络
一刀到底21140 分钟前
从实列中学习linux shell5: 利用shell 脚本 检测硬盘空间容量,当使用量达到80%的时候 发送邮件
linux·运维·学习
国际云,接待1 小时前
甲骨文云2025深度解析:AI驱动的云原生生态与全球化突围
运维·服务器·人工智能·云原生·性能优化·云计算·量子计算
Ops菜鸟(Xu JieHao)2 小时前
Linux Nginx网站服务【完整版】
linux·运维·服务器·nginx·网站
H1346948902 小时前
文件备份服务器,备份文件内容到服务器有哪些方法?
运维·服务器
caolib3 小时前
7.计算机网络相关术语
服务器·计算机网络·asp.net
鱼嘻3 小时前
数据结构------C语言经典题目(6)
linux·c语言·开发语言·数据结构·算法
小黄人20254 小时前
阿里云 ECS 服务器进阶指南:存储扩展、成本优化与架构设计
服务器·阿里云·云计算
x-cmd4 小时前
[250430] Kali Linux 存储库密钥丢失导致所有用户无法正常更新 APT
linux·运维·服务器·kali linux