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

相关推荐
小妖66612 分钟前
ubuntu 22.04 更换阿里源 (wsl2 参照)
linux·运维·ubuntu
凉、介14 分钟前
SylixOS 下的消息队列
linux·wpf·sylixos
egoist202337 分钟前
【Linux仓库】进程概念与基本操作【进程·贰】
linux·运维·服务器·指令·进程操作·理解进程
dessler37 分钟前
ZooKeeper-监控(Monitor)
linux·运维·zookeeper
礼拜五&2 小时前
Linux进程间通信——信号
linux·内核·glibc·信号
漫步企鹅2 小时前
【蓝牙】手机连接Linux系统蓝牙配对,Linux Qt5分享PDF到手机
linux·qt·智能手机·pdf·蓝牙分享
t偷亲星星2 小时前
基于gec6818的环境监测系统设计
linux·单片机·嵌入式硬件
一只不会编程的猫2 小时前
Could not find a declaration file for module ‘..XX‘.
linux·前端·vue.js·前端框架·vue·es6
听风lighting2 小时前
WevServer实现:异步日志写与HTTP连接
linux·网络·c++·网络协议·http·秋招·嵌入式面试
亮亮儿3 小时前
Linux -- 文件描述符和重定向
linux