Nginx 核心功能

目录

一、基于授权的访问控制

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

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

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

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

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

三、Nginx 虚拟主机

1. 基于域名的虚拟主机

2. 基于 IP 的虚拟主机

3. 基于端口的虚拟主机

四、LNMP 架构部署及应用

1. 编译安装 MySQL 服务

2. 安装PHP解析环境

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

4. 关联LNMP,部署Web应用


一、基于授权的访问控制

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

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

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

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

1. 安装 httpd-tools 软件包

yum -y install httpd-tools

2. 生成认证文件 

htpasswd -c /usr/local/nginx/passwd.db test   # test 是用户名
cat /usr/local/nginx/passwd.db   #查看生成用户和密码的密文

(2)修改密码文件权限

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 ,添加相应的认证配置项

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. 基于客户端的访问控制步骤

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 头区分请求目标

步骤:

1.创建站点目录,在目录下创建测试文件
	mkdir -p /var/www/html/目录名
	vim index.html
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 绑定独立网站。

# 绑定到 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 端口提供管理后台)。

# 监听 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 服务

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

2. 安装PHP解析环境

(1)安装PHP

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

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进程

[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解析

 [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页面的测试

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应用

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值