Nginx核心功能

目录

一:基于授权的访问控制

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

三:Nginx虚拟主机

1,基于域名的虚拟主机

2,基于IP的虚拟主机

3,基于端口的虚拟机主机

四:LNMP架构部署及应用

1,安装mairadb

2,安装并配置php

为php添加zend优化模块

一:基于授权的访问控制

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

  • 使用htpasswd生成用户认证文件
[root@localhost ~]# dnf -y install httpd-tools    ##安装用于生成密码文件的软件包

[root@localhost ~]# htpasswd -c /usr/local/nginx/passwd.db lisi ##生成密码,用户为lisi
New password: 
Re-type new password: 
Adding password for user lisi
##/usr/local/nginx/passwd.db    ##密码文件存放位置


[root@localhost ~]# chmod 400 /usr/local/nginx/passwd.db
##修改密码文件权限为可读

[root@localhost ~]# chown nginx /usr/local/nginx/passwd.db
##修改密码文件的所属者为nginx

  • 修改nginx主配置文件
     location / {
            root   html;
            index  index.html index.htm;
            auth_basic "secret";                       ##此部分添加两行
            auth_basic_user_file /usr/local/nginx/passwd.db;
        }


auth_basic "secret";                                                 
##用户访问受保护资源时弹出一个对话框,要求输入用户名和密码。                   


auth_basic_user_file /usr/local/nginx/passwd.db;   
##指定密码文件位置


[root@localhost ~]# nginx -t    ##检测nginx配置文件是否有误
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          ##重新启动nginx
[root@localhost ~]# netstat -anpt |grep nginx        ##查看nginx的监听端口
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      2057/nginx: master 


##验证前,关闭防火墙
systemctl stop firewalld
setenforce 0

  • 验证

输入用户名及密码进行访问

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

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

  • deny IP/IP 段: 拒绝某个|P 或IP 段的客户端访问
  • allow IP/IP 段:允许某个|P或 IP段的客户端访问
  • 规则从上往下执行,如匹配则停止,不再往下匹配。
       location / {
            root   html;
            index  index.html index.htm;
            #auth_basic "secret";
            #auth_basic_user_file /usr/local/nginx/passwd.db;
            deny 192.168.10.101;                 ##拒绝101客户机访问
            allow all;                           ##允许所有人访问
        } 



[root@localhost ~]# curl 192.168.10.102
<html>
<head><title>403 Forbidden</title></head>         ##使用101客户机进行访问会被拒绝
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.24.0</center>
</body>
</html>

三:Nginx虚拟主机

    Nginx 也可以配置多种类型的虚拟主机,分别是基于 IP 的虚拟主机、基于域名的虚拟主机、基于端口的虚拟主机。
    使用 Nginx 搭建虚拟主机服务器时,每个虚拟 web 站点拥有独立的“server{}”配置段,各自监听的 IP 地址、端口号可以单独指定,当然网站名称也是不同的。

1,基于域名的虚拟主机

  • 设置客户端域名解析并准备网站
[root@localhost ~]# vim /etc/hosts       ##修改hosts文件添加以下两行
192.168.10.102 www.aaa.com www.bbb.com   ##102主机设置两个域名

##创建两个域名的网站
[root@localhost ~]# mkdir -p /var/www/html/aaa
[root@localhost ~]# mkdir -p /var/www/html/bbb

[root@localhost ~]# cd /var/www/html/aaa
[root@localhost aaa]# echo "www.aaa.com" > index.html
[root@localhost aaa]# cd /var/www/html/bbb
[root@localhost bbb]# echo "www.bbb.com" > index.html


  • 修改配置文件 
##修改自带的server部分 
   server {
        listen       80;
        server_name  www.aaa.com;           ##设置域名www.aaa.cim

        #charset koi8-r;

        access_log  logs/www.aaa.com.access.log;

        location / {
            root   /var/www/html/aaa;        设置www.aaa.com域名的网站代码位置
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }


##添加新的server部分
    server {
        listen       80;
        server_name  www.bbb.com;       ##设置域名www.bbb.com

        #charset koi8-r;

        access_log  logs/www.bbb.com.access.log;

        location / {
            root   /var/www/html/bbb;     ##设置www.bbb.com域名的网站代码位置
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
}


[root@localhost aaa]# systemctl restart nginx   ##重启ningx方便测试
  • 进行测试

[root@localhost ~]# curl www.aaa.com
www.aaa.com

[root@localhost ~]# curl www.bbb.com
www.bbb.com

2,基于IP的虚拟主机

一台主机如果有多个 IP 地址,可以设置每一个 IP 对应一个站点。主机安装多个网卡可以有多个 IP,这里采用虚拟 IP 的方式使主机有多个 IP。

  • 为主机设置多个ip地址
[root@localhost network-scripts]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens160 ifcfg-ens160:0

[root@localhost network-scripts]# vim ifcfg-ens160:0
IPADDR=192.168.10.111           ##IP改为192.168.10.111
NAME=ens160:0                   ##网卡名字改为ens160:0
DEVICE=ens160:0

[root@localhost network-scripts]# nmcli c reload      ##重载网卡
[root@localhost network-scripts]# nmcli c up ens160
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/3
  •  修改nginx配置文件
    server {
        listen       192.168.10.102:80;
        server_name  www.aaa.com;

    server {
        listen       192.168.10.111:80;
        server_name  www.bbb.com;


[root@localhost ~]# systemctl restart nginx       ##重启nginx

[root@localhost ~]# netstat -anpt |grep nginx     ##查看两个IP监听的端口
tcp        0      0 192.168.10.102:80       0.0.0.0:*               LISTEN      1787/nginx: master  
tcp        0      0 192.168.10.111:80       0.0.0.0:*               LISTEN      1787/nginx: master  
  • 测试
[root@localhost ~]# curl 192.168.10.102
www.aaa.com
[root@localhost ~]# curl 192.168.10.111
www.bbb.com

3,基于端口的虚拟机主机

  server {
        listen       192.168.10.102:8888;         ##添加端口
        server_name  www.aaa.com;

 server {
        listen       192.168.10.111:8080;         ##添加端口
        server_name  www.bbb.com;

[root@localhost ~]# systemctl restart nginx     ##重启nginx

[root@localhost ~]# netstat -anpt |grep nginx   ##查看修改后的端口
tcp        0      0 192.168.10.102:8888     0.0.0.0:*               LISTEN      1809/nginx: master  
tcp        0      0 192.168.10.111:8080     0.0.0.0:*               LISTEN      1809/nginx: master 
  •  客户端验证
[root@localhost ~]# curl 192.168.10.102:8888
www.aaa.com

[root@localhost ~]# curl 192.168.10.111:8080
www.bbb.com

四:LNMP架构部署及应用

众所周知,LNMP 平台是目前应用最为广泛的网站服务器架构,

  • L:linux系统
  • N:nginx服务
  • M:mysql服务
  • P:php认证

1,安装mairadb

  • 使用联网的方式快速安装mairadb
[root@localhost ~]# dnf -y install mariadb-server
[root@localhost ~]# systemctl start mariadb.service       ##启动mariadb
[root@localhost ~]# mysqladmin -uroot password 'pwd123'   ##初始化密码

[root@localhost ~]# mysql -u root -ppwd123           ##进入到mariadb
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 10.5.28-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 

2,安装并配置php

[root@localhost src]# ls        
debug    nginx-1.24.0       zend-loader-php5.5-linux-x86_64_update1.tar.gz
kernels  php-5.5.38.tar.gz
##准备php所需软件包zend-loader-php5.5-linux-x86_64_update1.tar.gz   php-5.5.38.tar.gz
##并进行解压

[root@localhost src]# dnf -y install gd libxml2-devel libjpeg-devel libpng-devel 
##安装所需软件包
##GD: 指的是 Graphic Device,PHP 的 GD 库是用来处理图形的扩展库,通过 GD 库提供的一系列 API,可以对图像进行处理或者直接生成新的图片。PHP 除了能进行文本处理以外,通过 GD 库,可以对 JPG、PNG、GIF、SWF 等图片进行处理 

##libxm12-devel: libxml 是一个用来解析 XML文档的函数库

##libjpeg-devel:是一个完全用c语言编写的库,包含了被广泛使用的 JPEG 解码,JPEG 编码和其他的 JPEG 功能的实现

##libpng-devel: libpng 是一套免费的、公开源代码的程序库,支持对 PNG 图形文件的创建、读写等操作

##zlib-devel#Zlib 是一个压缩和解压模块


  •  编译安装的基本信息
[root@localhost php-5.5.38]# ./configure --prefix=/usr/local/php5 --with-gd --with-zlib --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-config-file-path=/uar/local/php5 --enable-mbstring --enable-fpm --with-jpeg-dir=/usr/lib

[root@localhost php-5.5.38]# make && make install

## --prefix=/usr/local/php5:文件前缀,指定 PHP 的安装目录为 /usr/local/php5

## --with-gd:用于处理图像创建、编辑、格式转换等操作的库

## --with-zlib:启用 zlib 压缩库支持,用于处理压缩文件

## --with-mysql=mysqlnd:启用 MySQL 支持,并使用 PHP 自带的 MySQL Native Driver

## --with-mysqli=mysqlnd:启用 MySQLi(MySQL Improved)扩展,同样使用 mysqlnd 驱动。

## --with-config-file-path=/uar/local/php5:

## --enable-mbstring:启用多字节字符串扩展,用于处理非 ASCII 字符

## --enable-fpm :性能的 PHP 进程管理,常用于 Nginx 服务器。

## --with-jpeg-dir=/usr/lib:指定 JPEG 库的路径为 /usr/lib,使 PHP 可以处理 JPEG 图片
  •  安装后的调整
##将 PHP 的开发环境配置文件 php.ini-development 复制到 PHP 的配置目录 /usr/local/php5/ 并重命名为 php.ini
[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
  • 为php添加zend优化模块

##解压zend压缩包并切换到zend目录
[root@localhost src]# cd zend-loader-php5.5-linux-x86_64
[root@localhost zend-loader-php5.5-linux-x86_64]# ls
opcache.so  README.txt  ZendGuardLoader.so


[root@localhost zend-loader-php5.5-linux-x86_64]# cp ZendGuardLoader.so /usr/local/php5/lib/php

## 将 Zend Guard Loader 扩展文件 ZendGuardLoader.so 复制到 PHP 的扩展目录 /usr/local/php5/lib/php 中,以便 PHP 可以加载这个模块。


[root@localhost zend-loader-php5.5-linux-x86_64]# vim /usr/local/php5/php.ini
修改php.ini文件添加两行
zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so   ##启用 Zend Guard Loader 的功能。
zend_loader.enable=1   ##启用 Zend Guard Loader 的功能。


  •  配置Nginx支持PHP环境
[root@localhost zend-loader-php5.5-linux-x86_64]# cd /usr/local/php5/etc
[root@localhost etc]# ls
pear.conf  php-fpm.conf.default
[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
;pid = run/php-fpm.pid               ##去掉;号
user = php
group = php
.max_children = 50       ##最多子进程数
pm.start_servers = 20          ##启动时开启的进程数
pm.min_spare_servers = 5    ##最少空闲进程数
pm.min_spare_servers = 35     ##最多空闲进程数
  •  配置Nginx支持php解析
   location / {
            root   /var/www/html/;
            index  index.html index.htm index.php;
            charset utf-8;

        }

   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;       ##引入 fastcgi.conf 文件,该文件定义了 Nginx 如何与 PHP-FPM通信
        }

[root@localhost html]# systemctl restart nginx

  • 准备php页面代码
##在/var/www/html添加以下两个网页代码文件
[root@localhost html]# cat test.php
<?
phpinfo();
?>

[root@localhost html]# cat test1.php
<?
$link=mysqli_connect('127.0.0.1','root','pwd123');
if($link)echo "<h1>恭喜你,数据库连接成功了</h1>";
mysqli_close($link);
?>
  •  测试

test.php

test1.php

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值