Nginx 核心功能

目录

一、基于授权的访问控制

[1. 基于授权的访问控制简介](#1. 基于授权的访问控制简介)

[2. 基于授权的访问控制步骤](#2. 基于授权的访问控制步骤)

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

[1. 基于客户机端的访问控制简介](#1. 基于客户机端的访问控制简介)

[2. 基于客户端的访问控制步骤](#2. 基于客户端的访问控制步骤)

[三、Nginx 虚拟主机](#三、Nginx 虚拟主机)

[1. 基于域名的虚拟主机](#1. 基于域名的虚拟主机)

[2. 基于 IP 的虚拟主机](#2. 基于 IP 的虚拟主机)

[3. 基于端口的虚拟主机](#3. 基于端口的虚拟主机)

[四、LNMP 架构部署及应用](#四、LNMP 架构部署及应用)

[1. 编译安装 MySQL 服务](#1. 编译安装 MySQL 服务)

[2. 安装PHP解析环境](#2. 安装PHP解析环境)

[3. 配置配置Nginx支持PHP环境](#3. 配置配置Nginx支持PHP环境)

[4. 关联LNMP,部署Web应用](#4. 关联LNMP,部署Web应用)


一、基于授权的访问控制

1. 基于授权的访问控制简介

  • 概述:Nginx 与 Apache 一样,可以实现基于用户授权的访问控制,当客户端想要访问相应网站或者目录时,要求用户输入用户名和密码才能正常访问
  • 步骤:
  1. 生成用户密码认证文件 ------》
  2. 修改主配置文件相应对应目录,添加认证配置项 ------》
  3. 重启服务,访问测试

2. 基于授权的访问控制步骤

(1)使用 htpasswd 生成用户认证文件

  1. 安装 httpd-tools 软件包
bash 复制代码
yum -y install httpd-tools
  1. 生成认证文件
bash 复制代码
htpasswd -c /usr/local/nginx/passwd.db test   # test 是用户名
cat /usr/local/nginx/passwd.db   #查看生成用户和密码的密文

(2)修改密码文件权限

bash 复制代码
chmod 400 /usr/local/nginx/passwd.db    #权限为400
chown nginx /usr/local/nginx/passwd.db   #所有者改为nginx
ll -d /usr/local/nginx/passwd.db   #查看

(3)修改主配置文件 nginx.conf ,添加相应的认证配置项

bash 复制代码
vim /usr/local/nginx/conf/nginx.conf    
server {  
    listen 80;  
    server_name example.com;  

    location /admin {  
        auth_basic "Restricted Area";          # 启用认证,显示提示信息  
        auth_basic_user_file /etc/nginx/.htpasswd;  # 指定密码文件路径  

        # 其他配置...  
    }  
}  

(4)检测语法、重启服务

复制代码
nginx -t  #检测是否错误
systemctl restart nginx  #重启

(5)用浏览器访问网址,验证控制效果

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

1. 基于客户机端的访问控制简介

基于客户端的访问控制通过 IP 地址子网段 限制访问权限,支持以下两种模式:

  • 白名单模式:仅允许指定 IP 访问,其他全部拒绝。

  • 黑名单模式:仅拒绝指定 IP,其他全部允许。

规则

  • deny IP/IP 段:拒绝某个IP或IP段的客户端访问。
  • allow IP/IP段:允许某个IP或IP段的客户端访问。
  • 规则从上往下执行,如匹配则停止,不再往下匹配

2. 基于客户端的访问控制步骤

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

    location /secure {  
        # 白名单示例:允许 192.168.1.0/24 和 10.0.0.5,拒绝其他所有  
        allow 192.168.1.0/24;  
        allow 10.0.0.5;  
        deny all;  

        # 黑名单示例:拒绝特定 IP,允许其他所有  
        # deny 203.0.113.1;  
        # deny 198.51.100.0/24;  
        # allow all;  

        # 其他配置...  
    }  
}  

三、Nginx 虚拟主机

1. 基于域名的虚拟主机

场景 :多个域名解析到同一 IP 地址,Nginx 根据 Host 头区分请求目标

步骤:

bash 复制代码
1.创建站点目录,在目录下创建测试文件
	mkdir -p /var/www/html/目录名
	vim index.html
bash 复制代码
2.在配置文件(/usr/local/nginx/conf/nginx.conf)中添加"server"模块,用于设置站点配置 

# 网站1:www.benet.com  
server {  
    listen 80;  
    server_name www.example.com;  #域名
    access_log logs/www/benet.com.access.log; #记录日志文件位置
    index index.html;  

    location / {  
        root  /var/www/html/benet        #站点目录路径
        try_files $uri $uri/ =404;  
    }  
}  

# 网站2:www.blog.com  
server {  
    listen 80;  
    server_name www.blog.com;  
    access_log logs/www/blog.com.access.log; 
    index index.html;  

    location / {  
        root /var/www/html/blog;
        try_files $uri $uri/ =404;  
    }  
}  

2. 基于 IP 的虚拟主机

场景:服务器有多个 IP 地址,每个 IP 绑定独立网站。

bash 复制代码
# 绑定到 IP 192.168.1.100  
server {  
    listen 192.168.1.100:80;  
    server_name _;  # 无需指定域名  
    root /var/www/site1;  
    index index.html;  
}  

# 绑定到 IP 192.168.1.200  
server {  
    listen 192.168.1.200:80;  
    server_name _;  
    root /var/www/site2;  
    index index.html;  
}  

3. 基于端口的虚拟主机

场景:同一 IP 的不同端口提供不同服务(如 80 端口提供 Web,8080 端口提供管理后台)。

bash 复制代码
# 监听 80 端口(HTTP 默认端口)  
server {  
    listen 80;  
    server_name example.com;  
    root /var/www/main;  
    index index.html;  
}  

# 监听 8080 端口(管理后台)  
server {  
    listen 8080;  
    server_name example.com;  
    root /var/www/admin;  
    index index.html;  

    # 可选:限制访问 IP  
    allow 192.168.1.0/24;  
    deny all;  
}  

四、LNMP 架构部署及应用

1. 编译安装 MySQL 服务

bash 复制代码
简化版mariadb
1.下载mariadb(yum -y install mariadb-server)
2.重启服务  systemctl start mariadb
3.生成密码  mysqladmin -uroot password '密码'

2. 安装PHP解析环境

(1)安装PHP

bash 复制代码
yum -y install gd libxml2-devel libjpeg-devel libpng-devel	#下载php所需要的依赖包
tar zxf php-5.5.38.tar.gz		#解压缩文件
cd php
./configure --prefix=/usr/local/php5 --with-gd --with-zlib --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-config-file-path=/usr/local/php5 --enable-mbstring --enable-fpm --with-jpeg-dir=/usr/lib	#编译安装

make && make install

#安装后调整
cp php.ini-development /usr/local/php5/php.ini
ln -s /usr/local/php5/bin/* /usr/local/bin/	#软链接
ln -s /usr/local/php5/sbin/* /usr/local/sbin/	#软连接

(2)安装ZendGuardLoader

bash 复制代码
tar zxf zend-loader-php5.5-linux-x86_64_update1.tar.gz
ls
cp zend-loader-php5.5-linux-x86_64/ZendGuardLoader.so /usr/local/php5/lib/php/		##复制出来

vim /usr/local/php5/php.ini		#添加两行内容
zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so
zend_loader.enable=1

3. 配置配置Nginx支持PHP环境

(1)启用php-fpm进程

bash 复制代码
[root@localhost ~]# cd /usr/local/php5/etc
[root@localhost etc]# cp php-fpm.conf.default php-fpm.conf
[root@localhost etc]# useradd -M -s /sbin/nologin php
[root@localhost etc]# vi /usr/local/php5/etc/php-fpm.conf
pid = run/php-fpm.pid
user = php              
group = php            
pm.max_children = 50      
pm.start_servers = 20      
pm.min_spare_servers = 5     
pm.max_spare_servers = 35
 
[root@localhost etc]# /usr/local/sbin/php-fpm
[root@localhost etc]# netstat -anpt | grep php-fpm

[root@localhost etc]# systemctl restart nginx

(2)配置Nginx支持PHP解析

bash 复制代码
 [root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf
  server {
        listen       80;
        server_name  www.bt.com;
        charset utf-8;
        access_log  logs/host.access.log  ;
        location / {
            root   /var/www/html;
            index  index.html index.htm index.php;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
  }
        location /status {
 		stub_status on;
		access_log off;
		}
   #添加以下php配置
       location ~ \.php$ {
           root           /var/www/html/;
           fastcgi_pass   127.0.0.1:9000;
           fastcgi_index  index.php;
      #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
           include        fastcgi.conf;
       }
}
 [root@localhost ~]# systemctl restart nginx

(3) PHP页面的测试

bash 复制代码
a.浏览器访问测试页(test1)
[root@localhost ~]# vi /var/www/html/test1.php
<?php
phpinfo();
?>

b. 浏览器访问测试页(test2)
[root@localhost ~]# vi /var/www/html/test2.php
<?php
$link=mysqli_connect('127.0.0.1','root','pwd123');
if($link)
echo "恭喜你,数据库连接成功!";
mysqli_close($link);
?>

/usr/local/php5/sbin/php-fpm 		#启动php
netstat -anpt |grep php		#查看php启动没有


访问会乱码
vim /usr/local/nginx/conf/nginx.conf
charset utf-8;

更改了test2.php的ip 127.0.0.1 改为192.168.10.101 访问失败 给root一个权限

mysql -uroot -ppwd123	#登录MySQL
grant all on *.* to root@'%' identified by 'pwd123';

grant all on *.* to root@'localhost' identified by 'pwd123';	#

访问URL 192.168.10.101/test1/2.php

4. 关联LNMP,部署Web应用

bash 复制代码
1:部署网站程序代码
[root@localhost ~]# yum -y install unzip
[root@localhost ~]# unzip Discuz_X3.3_SC_UTF8.zip 
[root@localhost ~]# mv upload/ /var/www/bdqn/bbs
[root@localhost ~]# chown -R php:php /var/www/bdqn/bbs

2:创建数据库
[root@localhost ~]# mysql -u root -p
Enter password: 
mysql> create database bbs;
mysql> grant all on bbs.* to runbbs@localhost identified by 'bbs@yh123';

3:安装web网站
用浏览器访问网站:
www.bdqn.com/bbs
相关推荐
不想当程序猿_5 分钟前
Centos 7系统 宝塔部署Tomcat项目(保姆级教程)
linux·redis·centos·tomcat·minio·宝塔
吴声子夜歌6 分钟前
Linux运维——Vim基础
linux·运维·vim
星释26 分钟前
阿里云服务迁移实战: 05-OSS迁移
服务器·阿里云·云计算
davenian1 小时前
< 自用文 rclone > 在 Ubuntu 24 访问 Google Drive 网络内容
linux·ubuntu·rclone
单车少年ing2 小时前
linux两个特殊的宏 _RET_IP_ 和_THIS_IP_ 实现
linux·arm
Lucas6492 小时前
项目上线流程梳理(Linux宝塔面板)
linux·运维·服务器·项目部署
手插口袋谁也不爱♡2 小时前
远程访问你的家庭NAS服务器:OpenMediaVault内网穿透配置教程
linux·运维·服务器
眠修2 小时前
Web技术与Nginx网站环境部署
运维·服务器
为美好的生活献上中指2 小时前
java每日精进 4.29【框架之自动记录日志并插入如数据库流程分析】
java·linux·数据库