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

相关推荐
不想起昵称92931 分钟前
tomcat
linux·服务器·tomcat
失因1 小时前
Web 服务详解:HTTP 与 HTTPS 配置
linux·运维·前端·http·https
cpsvps_net1 小时前
容器安全扫描工具在海外云服务器环境的集成方法
运维·服务器·安全
crushqqi1 小时前
【跨服务器的数据自动化下载--安装公钥,免密下载】
服务器·python·自动化
m0_747124531 小时前
视频输入输出模块介绍和示例
linux·音视频
qq_463944861 小时前
如何将新建的Anaconda虚拟环境导入Juputer内核中?
linux·windows·python
岚天start2 小时前
iptables -L 显示无目标链规则,但是iptables-save显示仍存在链规则原因分析
linux·服务器·网络·iptables·nat·filter·mangle
七七7222 小时前
Xshell连接虚拟机密码错误解决方法
linux
孙克旭_2 小时前
day073-Jenkins消息通知与pipline流水线
linux·运维·jenkins
mohesashou2 小时前
云原生作业(nginx)
运维·nginx