一:基于授权的访问控制
1:基于授权的访问控制简介
nginx与 apahce 一样,可以实现基于用户授权的访问控制,当客户端想要访问相应网站或者目录时,要求用户输入用户名和密码才能正常访问,配置步骤与 apache 基本一致。
概括为以下几个步骤。
- 生成用户密码认证文件。
- 修改主配置文件相对应目录,添加认证配置项。
- 重启服务,访问测试。
2:基于授权的访问控制步骤
(1)使用 htpasswd 生成用户认证文件
[root@localhost ~]# yum-y install httpd-tools [root@localhost ~]# htpasswd -c /usr/local/nginx/passwd.db test [root@localhost ~]# cat /usr/local/nginx/passwd.db
(2)修改密码文件权限为 400,将所有者改为 nginx,设置 nginx 的运行用户能够读取。
[root@localhost ~# chmod 400 /usr/local/nginx/passwd. db [root@localhost ~# chown nginx /usr/local/nginx/passwd. db [root@localhost ~# 1l-d /usr/local/nginx/passwd. db
(3)修改主配置文件 nginx.conf,添加相应认证配置项。
[root@localhost # vim /usr/local/nginx/conf/nginx.conf server { location / { auth basic "secret" auth basic user file /usr/local/nginx/passwd.db; } }
(4)检测语法、重启服务。
[root@localhost#nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx. conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful [root@localhost # systemctl restart nginx
(5)用浏览器访问网址,检验控制效果,如图 5.2所示。需要输入用户名和密码进行访问,验证通过才能访问到页面。
二:基于客户端的访问控制
1:基于客户端的访问控制简介
基于客户端的访问控制是通过客户端ip地址,决定是否允许对页面访问nginx 基于客户端的访问控制要比 apache 简单,规则如下:
- deny ip/ip 段:拒绝某个ip或ip 段的客户端访问
- allow ip/ip 段:允许某个ip或ip 段的客户端访问。
- 规则从上往下执行,如匹配则停止,不再往下匹配。
2:基于客户端的访问控制步骤
(1)修改主配置文件 nginx.conf,添加相应配置项。
location / { root html; index index.html index.htm; # auth basic "secret"; # auth basic user file /usr/local/nginx/passwd.db; deny 192.168.10.3; allow all; }
三:nginx 虚拟主机
1:基于域名的虚拟主机
(1)设置客户端域名解析
修改 hosts 文件,加入www.benet.com 和 www.accp.com 这两个域名
- 192.168.10.101 www.benet.com
- 192.168.10.101 www.accp.com
(2)准备各个网站的目录和测试首页
[root@localhost ~]# mkdir -p /var/www/html/benet! [root@localhost ~]# mkdir -p /var/www/htmllaccp! [root@localhost ~# echo "www.benet.com''>> /var/www/html/benet/index.html [root@localhost ~]# echo"www.accp.com">>/var/www/html/accp/index.html
(3)修改配置文件
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf server { listen 80; server_name www.benet.com; access_log logs/www.benet.com.access.log; charset utf-8; location / { root /var/www/html/benet; index index.html index.htm; } error_page 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; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
(4)测试
2:基于 ip 的虚拟主机
一台主机如果有多个 ip 地址,可以设置每一个 ip 对应一个站点。主机安装多个网卡可以有多个 ip,这里采用虚拟 ip 的方式使主机有多个 ip。
(1)为服务器设置多个ip地址
[root@localhost ~]# cd /etc/sysconfig/network-scripts/ [root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0 [root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens33:1
[root@localhost network-scripts]# vim ifcfg-ens33:0 ipaddr=192.168.10.151 netmask=255.255.255.0 gateway=192.168.10.254 dns1=223.6.6.6 name=ens33:0 device=ens33:0
[root@localhost network-scripts]# vim ifcfg-ens33:1 ipaddr=192.168.10.152 netmask=255.255.255.0 gateway=192.168.10.254 dns1=223.6.6.6 name=ens33:1 device=ens33:1
[root@localhost network-scripts]# nmcli c reload [root@localhost network-scripts]# nmcli c up ens33 [root@localhost network-scripts]# ip add
(2)修改 nginx的配置文件,使基于 ip 的虚拟主机生效
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf server { listen 192.168.10.151:80; server_name www.benet.com; ..... } server { listen 192.168.10.152:80; server_name www.accp.com; ..... } [root@localhost ~]# systemctl restart nginx
3:基于端口的虚拟主机
(1)选择系统中不使用的端口,多个端口映射到同一 ip 地址
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf server { listen 192.168.10.101:8080; server_name www.benet.com; ..... } server { listen 192.168.10.101:8888; server_name www.accp.com; ..... } [root@localhost ~]# systemctl restart nginx
(2)检测端口是否运行正常
[root@localhost ~]# netstat -anpt | grep nginx
(3)分别访问 2 个端口地址
四:lnmp 架构部署及应用
1:编译安装 mysql 服务
(1)编译安装 mysql 服务
[root@www ~]# yum install -y autoconf
备注:
autoconf是一个用于生成可以自动地配置软件源代码包以适应多种unix类系统的 shell脚本的工具。
[root@localhost ~]# yum -y install ncurses-devel gcc-c++ perl-module-install cmake [root@localhost ~]# tar -zxvf mysql-5.6.36.tar.gz [root@localhost ~]# cd mysql-5.6.36/ [root@localhost mysql-5.6.36]# cmake \ -dcmake_install_prefix=/usr/local/mysql \ -ddefault_charset=utf8 \ -ddefault_collation=utf8_general_ci \ -dwith_extra_charsets=all \ -dsysconfdir=/etc [root@localhost mysql-5.6.36]# make && make install
(2)复制配置文件到/etc 下,并把 mysql 添加到服务
[root@localhost mysql-5.6.36]# cp support-files/my-default.cnf /etc/my.cnf [root@localhost mysql-5.6.36]# cp support-files/mysql.server /etc/init.d/mysqld [root@localhost mysql-5.6.36]# chmod +x /etc/rc.d/init.d/mysqld [root@localhost mysql-5.6.36]# chkconfig --add mysqld [root@localhost mysql-5.6.36]# chkconfig mysqld on [root@localhost mysql-5.6.36]# echo "path=$path:/usr/local/mysql/bin">> /etc/profile [root@localhost mysql-5.6.36]# . /etc/profile
(3)初始化数据库
[root@localhost ~]# groupadd mysql [root@localhost ~]# useradd -m -s /sbin/nologin mysql -g mysql [root@localhost ~]# chown -r mysql.mysql /usr/local/mysql [root@localhost ~]# /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
(4)启动 mysql,并设置密码
[root@localhost ~]# systemctl start mysqld [root@localhost ~]# mysqladmin -u root password '123.com'
2:安装 php 解析环境
(1)编译安装 php
[root@localhost ~]# yum -y install gd libxml2-devel libjpeg-devel libpng-devel
备注:
- libxml2-devel:libxml是一个用来解析xml文档的函数库
- libjpeg-devel #是一个完全用c语言编写的库,包含了被广泛使用的jpeg解码、jpeg编码和其他的jpeg功能的实现
- libpng-devel #libpng 是一套免费的、公开源代码的程序库,支持对 png 图形文件的创建、读写等操作
- gd指的是graphic device,php的gd库是用来处理图形的扩展库,通过gd库提供的一系列api,可以对图像进行处理或者直接生成新的图片。php除了能进行文本处理以外,通过gd库,可以对jpg、png、gif、swf等图片进行处理
- zlib-devel #zlib是一个压缩和解压模块
[root@localhost ~]#tar -zxvf php-5.5.38.tar.gz
[root@localhost ~]#cd php-5.5.38/ [root@localhost php-5.5.38]# ./configure \ --prefix=/usr/local/php5 \ --with-gd \ --with-zlib \ --with-mysql=/usr/local/mysql \ --with-mysqli=/usr/local/mysql/bin/mysql_config \ --with-config-file-path=/usr/local/php5 \ --enable-mbstring \ --enable-fpm \ --with-jpeg-dir=/usr/lib
(2)安装后调整
[root@localhost php-5.5.38]# cp php.ini-development /usr/local/php5/php.ini [root@localhost php-5.5.38]# ln -s /usr/local/php5/bin/* /usr/local/bin/ [root@localhost php-5.5.38]# ln -s /usr/local/php5/sbin/* /usr/local/sbin/
(3)安装 zendguardloader
[root@localhost ~]# tar -zxvf zend-loader-php5.5-linux-x86_64_update1.tar.gz [root@localhost ~]# cd zend-loader-php5.5-linux-x86_64/ [root@localhost zend-loader-php5.5-linux-x86_64]# cp zendguardloader.so /usr/local/php5/lib/php/ [root@localhost zend-loader-php5.5-linux-x86_64]# 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]# vim php-fpm.conf [root@localhost etc]# /usr/local/sbin/php-fpm [root@localhost etc]# netstat -anpt | grep php-fpm [root@localhost ~]# vim /lib/systemd/system/php-fpm.service [root@localhost ~]# systemctl daemon-reload [root@localhost ~]# systemctl start php-fpm
(2)配置 nginx 支持 php 解析
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf server{ listen 80; server_name www.bt.com; location / { root /var/www/html; index index.html index.htm index.php; } location ~ \.php$ { root /var/www/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; } }
(3)php 页面访问测试
[root@localhost ~]# mkdir -p /var/www/html/ [root@localhost ~]# vim /var/www/html/test1.php <?php phpinfo(); ?> [root@localhost ~]# vim /var/www/html/test2.php <?php $link=mysqli_connect('127.0.0.1','root','pwd123'); if($link) echo "<h1>恭喜你,数据库连接成功啦!!!</h1>"; mysqli_close($link); ?>
4:在 lnmp 平台中部署 web 应用
(1)下载并部署程序代码
[root@localhost ~]# yum -y install unzip [root@localhost ~]# unzip discuz_x3.3_sc_utf8.zip [root@localhost ~]# mkdir -p /var/www/html/bbs [root@localhost ~]# mv upload/* /var/www/html/bbs [root@localhost ~]# chown -r php:php /var/www/html/bbs/
(2)创建数据库
[root@localhost ~]# mysql -uroot -p mysql>create database bbs; mysql>grant all on bbs.* to runbbs@127.0.0.1 identified by 'bbs123'; mysql>grant all on bbs.* to runbbs@'localhost' identified by 'bbs123';
(3) 安装 web 应用
访问服务器 url 地址,对网站进行初始化
http://192.168.10.101/bbs/install/index.php
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论