Nginx核心功能

目录

一:基于授权的访问控制

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

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

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

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

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

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

(5)浏览器访问检测效果

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

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

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

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

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

1:基于域名的虚拟主机

(1)设置客户端域名解析

(2)准备各个网站的目录和测试首页

(3)修改配置文件

2:基于IP的虚拟主机

(1)为服务器设置多个IP地址

(2)修改nginx的配置文件,是基于IP的虚拟主机生效

3:基于端口的虚拟主机

(1)选择系统总不使用的端口,多个端口映射到用以IP地址

(2)检测端口是否运行正常

四:LNMP架构部署及应用

1:编译安装MySQL服务

(1)编译安装MySQL服务

(2)复制配置文件到/etc下,并把MySQL添加到服务

(3)初始化数据库

(4)启动MySQL,并设置密码

2.安装PHP解析环境

(1)编译按钻过PHP

(2)安装后调整

(3)安装ZendGuardLoader

3:配置nginx支持PHP环境

(1)启用php-fpm进程

(2)配置nginx支持php解析

(3)php页面访问


一:基于授权的访问控制

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

Nginx与Apahce一样,可以实现基于用户授权的访问控制,当客户端想要访问相应网站或者目录时,要求用户输入用户名和密码才能正常访问,配置步骤与Apache基本一致。

概括为以下几个步骤。

>生成用户密码认证文件。

>修改主配置文件相对应目录,添加认证配置项。

>重启服务,访问测试。

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

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

使用htpasswd生成用户认证文件,如果没有该命令,可使用yum安装httpd-tools软件包,用法与Apache认证时方式相同,女: htpasswd -c/usr/local/nginx/passwd.db test. 在/usr/local/nginx/目录下生成了passwd.db文件,用户名是test,密码输入2次。在passwd.db中生成用户和密码的密文。

root@localhost \~\]# yum -y install httpd-tools \[root@localhost \~\]# htpasswd -c /usr/local/nginx/passswd.db test \[root@localhost \~\]# cat /usr/local/nginx/passwd.db

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

root@localhost \~\]# chmod 400 /usr/local/nginx/passwddb \[root@localhost \~\]# chown nginx /usr/local/nginx/passswd.db \[root@localhost \~\]# ll -d /usr/local/nginx/passwodb

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

server {

listen 80;

server_name localhost;

#charset koi8-r;

#access_log logs/host.access.log main;

location/{

root html;

index index.html index.htm;

auth_basic "secret";
auth_basic_user_file /usr/local/nginx/passwd.db;

}

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

root@localhost \~\]# nginx -t \[root@localhost \~\]# systemctl restart nginx

(5)浏览器访问检测效果

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

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

基于客户端的访问控制是通过客户端IP地址,决定是否允许许对页面访问。Nginx于客户端的访问控制要比Apache简单,规则如下:

>denyIP/IP段:拒绝某个IP段的客户端访问。

>allowIP/IP段:允许某个IP段的客户端访问。

>规则从上往下执行,如匹配则停止,不再往下匹配。

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

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

location / {

root html;

indexindex.html index.htm;

auth_basic "secret";

auth_basic_user_file /usr/local/nginx/passwd.db;

deny 192.168.10.3;

allow all;

}

三:Nginx 虚拟主机

利用虚拟主机,不用为每个要运行的网站提供一台单独的Nginx服务器或单独运行一组Nginx进程,虚拟主机提供了在同一台服务器,同一组Ngiinx 进程上运行多个网站的功能。跟Apache一样,Nginx也可以配置多种类型的虚拟主机,分别是基于IP的虚拟主机、基于域名的虚拟主机、基于端口的虚拟主机。

使用Nginx搭建虚拟主机服务器时,每个虚拟Web站点拥有独立的"server{}"配置段,各自监听的IP地址、端口号可以单独指定,当然网站名和你也是不同的

1:基于域名的虚拟主机

(1)设置客户端域名解析

修改hosts文件,加入www.benet.com和ww.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/html/accp/ \[root@localhost \~\]# echo "www.benet.com"\>\>/var/www/html/beenet/index.html \[root@localhost \~\]# echo "www.accp.com"\>\>/var/www/htrml/accp/index.html

(3)修改配置文件

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;

}

}

root@localhost \~\]# nginx -t \[root@localhost \~\]# systemctl restart nginx 访问测试

2:基于IP的虚拟主机

(1)为服务器设置多个IP地址

root@localhost \~\]# cd /etc/sysconfig/network-scripts \[root@localhost network-scripts\]# cp ifcfg-ens33 iifcfg-ens 33:0 \[root@localhost network-scripts\]# cp ifcfg-ens33 iifcfg-ens 33:1 \[root@localhost network-scripts\]# vim ifcfg-ens33:0 \[root@localhost network-scripts\]# vim ifcfg-eens33: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 { listen 192.168.10.152:80; ............ \[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 { listen 192.168.10.101:8080; ................ \[root@localhost \~\]# systemctl restart nginx

(2)检测端口是否运行正常

root@localhost \~\]# netstat -anpt \| grep nginx 分别访问两个端口地址

四:LNMP架构部署及应用

1:编译安装MySQL服务

(1)编译安装MySQL服务

root@www \~\]# yum install -y autoconf

备注:

Autoconf是一个用于生成可以自动地配置软件源代码包以认适应多种Unix类系统的shell脚本的工具。

root@localhost \~\]# yum -y install ncurses-devel gcc-c++ perl-Modulee-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/etcmy.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/locaal/mysql/bin"\>\> /etc/profile \[root@localhost mysql-5.6.36\]# . letc/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 'pwd123'

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是一个压缩和解压模块zlib-devel \[root@localhost \~\]#tar -zxvf php-5.38.tar.gz

(2)安装后调整

root@localhost php-5.38\]# cp php.ini-development/usr/loccal/php5/php.ini \[root@localhost php-5.5.38\]# In -s /usr/local/php5/bin/\* /usr/local/biin/ \[root@localhost php-5.5.38\]# In -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.coonf \[root@localhost etc\]# useradd -M -s /sbin/nologin php \[root@localhost etc\]# vim 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 \~\]# vim /lib/systemd/system/php-fpm.service \[Unit

Description=The PHP FastCGI Process Manager

After=network.target

Service

Type=simple

PIDFile=/usr/local/php5/php-fpm.pid

ExecStart=/usr/local/php5/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php5/etc/php-fpm.con

ExecReload=/bin/kill -USR2 $MAINPID

Private Tmp=true

Install

WantedBy=multi-user.target

root@localhost \~\]# systemctl daemon-reload \[root@localhost \~\]# systemctl start php-fpm

(2)配置nginx支持php解析

调用本机的php-fpm进程

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 \ \[root@localhost \~\]# vim /var/www/html/test2.php \恭喜你,数据库连接成功啦!!!\"; mysqli_close($link); ?\>

相关推荐
Evan芙20 小时前
Nginx 安装教程(附Nginx编译安装脚本)
windows·nginx·postgresql
怪我冷i20 小时前
wsl Ubuntu切换中科大源
linux·windows·ubuntu·ai编程·ai写作
FenceRain20 小时前
Linux 使用脚本删除文件
linux
QT 小鲜肉20 小时前
【Linux命令大全】001.文件管理之chgrp命令(实操篇)
android·linux·运维·笔记
qq132670294020 小时前
grafana 未授权访问漏洞设置iptables指定IP访问,拒绝其他所有IP
linux·服务器·网络·iptables·防火墙策略
春日见20 小时前
ubuntu以前可以联网,突然无法上网了
linux·服务器·ubuntu·debug
曹牧20 小时前
内部服务错误500
服务器·开发语言
gaize121320 小时前
一台服务器能做什么
服务器·云计算
ID_1800790547320 小时前
淘宝关键词搜索 API 系列 数据返回参考(附解析与实战)
java·服务器·前端
鸠摩智首席音效师20 小时前
如何在 CentOS 上设置 Apache Worker MPM ?
linux·centos·apache