基于授权的访问控制
基于授权的访问控制简介
Nginx 与 Apahce 一样,可以实现基于用户授权的访问控制,当客户端想要访问相应网站或者目录时,要求用户输入用户名和密码才能正常访问,配置步与 Apache 基本一致
- 生成用户密码认证文件
- 修改主配置文件相对应目录,添加认证配置项
- 重启服务,访问测试
基于授权的访问控制步骤
使用 htpasswd 生成用户认证文件
使用 htpasswd生成用户认证文件,如果没有该命令,可使用yum安装httpd-tools软件包,用法与Apache 认证时方式相同,如:htpasswd-C/usr/local/nginx/passwd.db test在/usr/local/nginx/目录下生成了 passwd.db文件,用户名是 test,密码输入 2次。在passwd.db 中生成用户和密码的密文
#安软件包
dnf -y install httpd-tools
#创建文件,并添加用户zhangsan
htpasswd -c /usr/local/nginx/passwd.db zhangsan
修改密码文件权限为 400,将所有者改为nginx,设置 Nginx 的运行用户能够读取
#属主
chown nginx /usr/local/nginx/passwd.db
#更改权限
chmod 400 /usr/local/nginx/passwd.db
修改主配置文件nginx.conf,添加相应认证配置项
auth_basic "secret"
auth_basic_user_file /usr/local/nginx/passwd.db
systemctl restart nginx
检测语法、重启服务
[root@localhost ~]# nginx -t
[root@localhost ~l# systemctlrestart nginx
用浏览器访问网址,检验控制效果
基于客户端的访问控制
基于客户端的访问控制简介
基于客户端的访问控制是通过客户端 IP 地址,决定是否允许对页面访问。Nginx 基
干客户端的访问控制要比 Apache 简单
- deny IP/IP 段:拒绝某个IP 或IP 段的客户端访问
- allow IP/IP 段:允许某个IP 或IP 段的客户端访问
- 规则从上往下执行,如匹配则停止,不再往下匹配
基于客户端的访问控制步骤
location /{
root html;
index index,html index .htm;
# auth basic "secret",
# auth basicuser file /usr/local/nginx/passwd.dh;
deny 192.168.10.102;
allow all;
}
修改主配置文件 nginx.conf,添加相应配置项
Nginx 虚拟主机
利用虚拟主机,不用为每个要运行的网站提供一台单独的 ginx 服务器或单独运行组 Nginx 进程,虚拟主机提供了在同一台服务器,同一组 Nginx 进程上运行多个网站的功能。跟 Apache 一样,Nginx 也可以配置多种类型的虚拟主机,分别是基于IP 的虚拟主机、基于域名的虚拟主机、基于端口的虚拟主机
使用 Nginx 搭建虚拟主机服务器时,每个虚拟 web 站点拥有独立的“server{}”配置段,各自监听的 IP 地址、端口号可以单独指定,当然网站名称也是不同的
基于域名的虚拟主机
设置客户端域名解析
修改hosts 文件,加入www.benet.com 和 www.accp.com 这两个域名
#关闭防火墙
systemctl stop firewalld
#禁用防火墙
systemctl disable firewalld
#关闭内核保护机制
setenforce 0
#编辑hosts文件
vim /etc/hosts
192.168.10.101 www.benet.com
192.168.10.101 www.accp.com
[rootalocalhost ~]#systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
Removed "/etc/systemd/system/multi-user.target.wants/firewalld.service"
Renoved "/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service"[rootalocalhost~l#setenforce 0
[rootalocalhost ~l# vim /etc/hosts
[rootalocalhost ~]#
准备各个网站的目录和测试首页
[rootalocalhost~]# mkdir -p /var/www/html/benet
[rootalocalhost~]# mkdir-p /var/www/html/accp
[rootalocalhost~]#echo"www.benet.com11111">>/var/www/html/benet/index.html
[rootalocalhost~]#echo"www.accp.com22222">>/var/www/html/accp/index.html
修改配置文件
server{
listen 80;
server name, www.benet.com;
acCess lag logs/www.benet.com.access.log;
charset utf-8;
location / {
root/var/www/html/benet;
index index.html index.htm;
}
errorpage 500 502 503 504 /50x.html;
location =50x.html {
root html;
}
}
server {
listen 80;
server name,www.accp.com;
access.log logs/www.accp.com.access.log;
charset utf-8;
location / {
root /var/www/html/accp;
index index.html index.htm;
}
errorpage 500 502 503 504 /50x.html;
location =50x.html {
root html;
}
}
[root@localhost ~]# nginx -t
[root@localhost ~l# systemctl restart nginx
基于 IP 的虚拟主机
台主机如果有多个 IP 地址,可以设置每一个IP 对应一个站点。主机安装多个网卡可以有多个 IP,这里采用虚拟IP 的方式使主机有多个 IP
为服务器设置多个 IP 地址
[root@localhost ~]# cd /etc/sysconfig/network-scripts
[root@localhost network-scripts]# cp ifcfg-ens160 ifcfg-ens160:0
root@localhost network-scripts]# cp ifcfg-ens160 ifcfg-ens160:1
[root@localhost network-scripts]# nmcli c reloade
[root@localhost network-scripts]# nmcli c up ens160
[root@localhost network-scripts]# ip adde
修改 Nginx 的配置文件,使基于IP 的虚拟主机生效
[root@localhost ~]#vim /usr/local/nginx/conf/nginx.conf
[root@localhost ~]l#systemctl restart nginx
基于端口的虚拟主机
###### 选择系统中不使用的端口,多个端口映射到同一IP 地址
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
[root@localhost ~]# systemctl restart nginx
检测端口是否运行正常
[root@localhost ~]# netstat -anpt grep nginx
LNMP架构部署及应用
众所周知,LAMP 平台是目前应用最为广泛的网站服务器架构,其中“A”对应着 web 服务软件 Apache。随着 Nginx在企业中的使用越来越多,LNMP(或 LEMP)架构也越老越受到企业的青睐
编译安装 MySQL 服务
编译安装 MySQL 服务
[root@localhost ~]# yum install -y autoconf
Autoconf,是一个用于生成可以自动地配置软件源代码包以适应多种 Unix 类系统的 shell脚本的工具
#解压源码包
tar zxf php-5.5.38.tar.gz
#配置
./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
复制配置文件到/etc 下,并把 MySQL 添加到服务
初始化数据库
启动 mysql,并设置密码
安装 PHP 解析环境
编译安装 PHP
- libxml2-devel:libxml 是一个用来解析 XML 文档的函数库
- libjpes-devel #是一个完全用℃语言编写的库,包含了被广泛使用的 JPEG 解码、JPEG 编码和其他的 JPEG 功能的实现
- libpng 是一套免费的、公开源代码的程序库,支持对 PNG 图形libpng-devel文件的创建、读写等操作
- GD 指的是 Graphic Device,PHP 的 GD 库是用来处理图形的扩展库,通过 GD 库提供的一系列 API,可以对图像进行处理或者直接生成新的图片。PHP 除了能进行文本处理以外,通过 GD 库,可以对 JPG、PNG、GIF、SWF 等图片进行处理
- zlib-devel#Zlib 是一个压缩和解压模块
–with-mysqli=mysqlnd 需要用 ip,地址的方式连接数据库,既可以是 php和mysql装在同一个服务器,也可以装在不同的服务器。用127.0.8.1本地连接不需要为连接授权,用192.168.10.101连接需要授权,哪怕连接本地数据库。–with-mysqli=/usr/bin/mysglconfig,需要用 localhost 连接数据库,只能用于本地连接,也就是 php和 mysql装在同一个服务器上
安装后调整
[root@localhost php-5.5.38]# cp php.ini-development /usr/local/php5/php.ini
[rootalocalhost php-5.5.38]#in-s /usr/local/php5/bin/* /usr/local/bin/
[root@localhost php-5.5.38]#in -s /usr/local/php5/sbin/* /usr/local/sbin/
安装 ZendGuardLoader
#解压源码包
tar zxf zend-loader-php5.5-linux-x86_64_update1.tar.gz
cp 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
配置Nginx支持PHP环境
启用 php-fpm 进程
cd /usr/local/php5/etc/
cp php-fpm.conf.default php-fpm.conf
useradd -M -s /sbin/nologin php
vim php-fpm.conf
#编辑内容
pid = run/php-fpm.pid #25
user = php #149
group = php #150
pm.max_children = 50 ##最多子进程数 #230
pm.start_servers = 20 ##启动时开启的进程数 #235
pm.min_spare_servers = 5 ##最少空闲进程数 #240
pm.max_spare_servers = 35 ##最多空闲进程数 #245
[rootalocalhost etc]# php-fpm
[rootalocalhost etc]# netstat -anpt | grep fpm
tcp 0 0 127.0.0.1 9000 0.0.0.0:* LISTEN 116785/php-fpm:mas
配置 Nginx 支持 PHP 解[析
[root localhost etc]# vim /usr/local/nginx/conf/nginx.conf
[root localhost etc]# nginx -t
the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root localhost etc]#systemctl restart nginx
PHP 页面访问测试
在LNMP 平台中部署 Web 应用
下载并部署程序代码
dnf -y install unzip
unzip Discuz_X3.3_SC_UTF8.zip
mkdir -p /var/www/html/bbs
mv upload/* /var/www/html/bbs
chown -R php:php /var/www/html/bbs/
创建数据库
MariaDB [(none)]> create database bbs;
Query OK, 1 row affected (0.006 sec)
MariaDB [(none)]> grant all on bbs.* to runbbs@127.0.0.1 identified by 'bbs123';
Query OK, 0 rows affected (0.006 sec)
MariaDB [(none)]> grant all on bbs.* to runbbs@'localhost' identified by 'bbs123';
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]>