Nginx核心功能

目录

一:基于授权的访问控制

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

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

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

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

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

三:Nginx虚拟主机

1:基于域名的虚拟主机

2:基于IP的虚拟主机

3:基于端口的虚拟主机

四:LNMP架构部署及应用

1:编译安装MySQL服务

2:安装PHP解析环境

3:配置nginx支持PHP环境

4:在LNMP平台中部署web应用


一:基于授权的访问控制

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

(1)定义:

  • 防止未授权访问,保护数据机密性、完整性及可用性。

  • 遵循最小权限原则,减少权限滥用风险。

(2)目的:

  • 权限分离:根据角色、属性或上下文动态分配权限。

  • 动态策略:结合用户身份、环境因素(如时间、位置)进行实时决策。

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

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

yum -y install httpd-tools(用于生成认证文件)
htpasswd -c /usr/local/nginx/passwd.db zhangsan(用户) #-c创建
htpasswd  /usr/local/nginx/passwd.db lisi
cat  /usr/local/nginx/passwd.db	#查看密文

(2)修改密码文件权限为400,将所有者改为nginx,设置nginx的运行用户能够读取

chmod 400 /usr/local/nginx/passwd.db	      #设置权限
chown nginx /usr/local/nginx/passwd.db

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

vim /usr/local/nginx/conf/nginx.conf
                     location / {
			auth_basic "secret";
			auth_basic_user_file  /usr/local/nginx/passwd.db;
		     }

(4)检查语法,重启服务

nginx -t 
systemctl restart nginx

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

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

(1)定义:

基于客户端的访问控制(Client-Based Access Control)是一种依赖客户端环境属性(如设备状态、地理位置、软件配置等)动态管理资源访问权限的机制。其核心在于通过客户端的本地信息或行为特征进行权限决策,而非完全依赖服务端策略。

(2)目的:

  • 适应多样化终端环境,动态调整访问权限。

  • 降低服务端计算负担,提升响应效率。

  • 防范来自不安全客户端的潜在威胁(如恶意设备、未授权应用)。

(3)优势:

  • 灵活性:适应客户端动态变化(如设备位置切换)。

  • 低延迟:减少与服务端的交互次数。

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

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

vim /usr/local/nginx/conf/nginx.conf
                     location / {
			#auth_basic "secret";
			#auth_basic_user_file  /usr/local/nginx/passwd.db;
			deny 192.168.10.202(某一个IP地址);
			allow all;
		     }

三:Nginx虚拟主机

1:基于域名的虚拟主机

(www.aaa.com、www.bbb.com->一个IP)不同的网址解析为同一个IP地址

修改hosts文件:192.168.10.201 www.aaa.com
                          192.168.10.201 www.bbb.com
mkdir -p /var/www/html/aaa/
mkdir -p /var/www/html/bbb/
echo "www.aaa.com" >> /var/www/html/aaa/index.html
echo "www.bbb.com" >>/var/www/html/bbb/index.html

vim /usr/local/nginx/conf/nginx.conf
server {
                listen		80;     
	        server_name	www.aaa.com;
		access_log	log/www.aaa.com.access.log;
		charset	utf-8;
		location /{
			root /var/www/html/aaa;
			index index.html index.htm;
		}
}
 server {
                listen		80;     
	        server_name	www.bbb.com;
		access_log	log/www.bbb.com.access.log;
		charset	utf-8;
		location /{
			root /var/www/html/bbb;
			index index.html index.htm;
		}
}

nginx -t 
systemctl restart nginx
  • 注意事项

    • 支持HTTPS时需配置SNI,为每个域名指定独立SSL证书。

    • 优先级:精确匹配域名 > 通配符域名 > 默认server块(首个或标记为default_server)。

2:基于IP的虚拟主机

(192.168.10.201:80、192.168.10.200:80)不同的IP地址使用相同的端口

cd /etc/sysconfig/network-scripts/
复制并修改子接口:cp ifcfg-ens33 ifcfg-ens33:0
		    	cp ifcfg-ens33 ifcfg-ens33:1
nmcli c reload
nmcli c up ens33
ip add

vim /usr/local/nginx/conf/nginx.conf
server {
        listen		192.168.10.201:80;     
	    server_name	www.aaa.com;
		access_log	log/www.aaa.com.access.log;
		charset	utf-8;
		location /{
			root /var/www/html/aaa;
			index index.html index.htm;
		}
}
 server {
        listen		192.168.10.200:80;     
	    server_name	www.bbb.com;
		access_log	log/www.bbb.com.access.log;
		charset	utf-8;
		location /{
			root /var/www/html/bbb;
			index index.html index.htm;
		}
}

nginx -t 
systemctl restart nginx
浏览器访问:192.168.10.201:80
           192.168.10.200:80
  • 注意事项

    • 服务器需配置多个IP(通过网卡别名或虚拟接口)。

    • 确保防火墙允许对应IP和端口的流量。

3:基于端口的虚拟主机

(80、8080)相同IP地址基于不同的端口

vim /usr/local/nginx/conf/nginx.conf
server {
        listen		192.168.10.201:80;     
	    server_name	www.aaa.com;
		access_log	log/www.aaa.com.access.log;
		charset	utf-8;
		location /{
			root /var/www/html/aaa;
			index index.html index.htm;
		}
}
 server {
        listen		192.168.10.201:8080;     
	    server_name	www.bbb.com;
		access_log	log/www.bbb.com.access.log;
		charset	utf-8;
		location /{
			root /var/www/html/bbb;
			index index.html index.htm;
		}
}

nginx -t 
systemctl restart nginx
浏览器访问:192.168.10.201:80
           192.168.10.201:8080 
  • 注意事项

    • 需开放端口防火墙规则。

    • 非标准端口可能影响用户体验,常用于测试或内部服务。

四:LNMP架构部署及应用

1:编译安装MySQL服务

(1)编译安装MySQL服务,复制配置文件到/etc/下,并把mysql添加到服务,初始化数据库,启动MySQL,并设置密码

简化安装MySQL:dnf -y install mariadb-server
systemctl start mariadb
mysqladmin -uroot passwd 'pwd123'
mysql -uroot -ppwd123

2:安装PHP解析环境

(1)编译安装PHP

dnf -y install gd libxml2-devel libjpeg-devel libpng-devel

MySQL用yum装的

./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
——回车——

(2)安装后调整

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/

(3)安装ZendGuardLoader

tar zxvf zend-loader-php5.5
cd zend-loader-php5.5
cp 文件/Z      /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

cd /usr/local/php5/etc/
cp php-fpm.conf.default.php-fpm.conf
useradd php
vim php-fpm.conf
启动配置文件:/usr/local/sbin/php-fpm
netstat -anpt | grep php-fpm

(2)配置nginx支持PHP解析

vim /usr/local/nginx/conf/nginx.conf
 server {
        listen       80;
        server_name  www.bdqn.com;
        charset utf-8;
        access_log  logs/host.access.log  main;
        location / {
            root   /var/www/bdqn;
            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;
		}
       location ~ \.php$ {
           root           /var/www/html/bdqn;
           fastcgi_pass   127.0.0.1:9000;
           fastcgi_index  index.php;
           include        fastcgi.conf;
       }
}
systemctl restart nginx

(3)PHP页面访问测试

 a.浏览器访问测试页(test1)

vi /var/www/bdqn/test1.php
<?php
phpinfo();
?>

 b. 浏览器访问测试页(test2)

vi /var/www/bdqn/test2.php
<?php
$link=mysqli_connect('localhost','root','pwd123');
if($link)
echo "恭喜你,数据库连接成功!";
mysqli_close($link);
?>

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

可以访问最终LNMP页面

1: LNMP结果验证

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值