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

<?php

phpinfo();

?>

root@localhost \~# vim /var/www/html/test2.php

<?php

$link=mysqli_connect('127.0.0.1','root, pwd123');

if(Slink)echo"<h1>恭喜你,数据库连接成功啦!!!</h1>";

mysqli_close($link);

?>

相关推荐
毒爪的小新6 分钟前
Linux 环境极速部署 vLLM:从零搭建生产级大模型推理服务
linux·人工智能·ai·语言模型·vllm
鹤落晴春13 分钟前
RH124问答3:从命令行管理文件
linux·运维·服务器
凡人叶枫18 分钟前
Effective C++ 条款30:透彻了解 inlining 的里里外外
linux·开发语言·c++·嵌入式开发·effective c++
火山上的企鹅1 小时前
Codex实战:APP远程升级服务搭建(三)后台管理页面(APK 上传、版本管理、多应用页签)
服务器·网络·数据库·oracle·qgc
Net_Walke1 小时前
【Linux系统】静态链接库与动态链接库
linux·嵌入式硬件
syc78901232 小时前
中文语境下AI编码工具实战对比:从迭代体验看日常开发选择
linux·人工智能·ubuntu
❀搜不到2 小时前
远程服务器codex使用本地cc-switch的deepseek api
运维·服务器
凡人叶枫2 小时前
Effective C++ 条款22:将成员变量声明为 private
linux·开发语言·c++
袁小皮皮不皮2 小时前
3.HCIP OSPF补充知识(优化版)
服务器·网络·数据库·网络协议·智能路由器
袁小皮皮不皮3 小时前
1.HCIP BFD 学习笔记(优化版)
服务器·网络·笔记·网络协议·学习·智能路由器·ip