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

相关推荐
wusam2 分钟前
Linux系统管理与编程23:巧用git资源一键部署LAMP
linux·运维·git·shell·lamp
大得3693 分钟前
安装openresty使用nginx+lua,openresty使用jwt解密
nginx·lua·openresty
知北游天1 小时前
Linux:再谈进程地址空间
android·linux·运维
liulilittle2 小时前
yum 报错误提示:yum-config-manager --disable <repoid>
linux·服务器·centos
Ro小陌2 小时前
海康威视摄像头C#开发指南:从SDK对接到安全增强与高并发优化
服务器·c#
凯子坚持 c2 小时前
使用 CodeBuddy 实现视频合并工具:解决本地视频处理痛点
运维·服务器·音视频·codebuddy首席试玩官
mit6.8242 小时前
[软件测试_4] 沟通技巧 | 测试用例 | 设计方法
服务器·软件工程
Johny_Zhao2 小时前
Nmap 从入门到精通:详细指南
linux·网络·网络安全·信息安全·云计算·shell·nmap·yum源·系统运维·itsm
言之。2 小时前
CentOS 7上搭建高可用BIND9集群指南
服务器·dns