Nginx核心功能

目录

一:基于授权的访问控制

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

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

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

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

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

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

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

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

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

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

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

三: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);

?>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/78727.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AnimateCC基础教学:漫天繁星-由DeepSeek辅助完成

1.界面及元件抓图: 2.核心代码: // 初始化设置 var stars []; var stars2 []; var numStars 100; var stageWidth stage.canvas.width; var stageHeight stage.canvas.height; console.log(stageWidth, stageHeight);// 创建星星函数 function createStar() {var star n…

通过DeepSeek大语言模型控制panda机械臂,听懂人话,拟人性回答。智能机械臂助手又进一步啦

文章目录 前言环境配置运行测试报错 前言 通过使用智能化的工作流控制系统来精确操控机械臂&#xff0c;不仅能够基于预设算法可靠地规划每个动作步骤的执行顺序和力度&#xff0c;确保作业流程的标准化和可重复性&#xff0c;还能通过模块化的程序设计思路灵活地在原有工作流中…

分享一款免费的 AI 工作流平台

分享一款 AI 工作流/任务流平台&#xff0c;通过直观的流程图设计&#xff0c;轻松实现复杂业务流程的自动化与可视化&#xff0c;无缝集成 AI 大模型、AI 生图、数据库、条件分支、并行节点、自定义任务节点等等。 效果图&#xff1a; 官网体验地址&#xff1a;https://www.…

前端开发本地配置 HTTPS 全面详细教程

分为两步&#xff1a;生成证书、本地服务配置使用证书一、HTTPS 的基本概念 HTTPS 是一种安全的 HTTP 协议&#xff0c;它通过 SSL/TLS 对数据进行加密&#xff0c;确保数据在传输过程中不被窃取或篡改。在前端开发中&#xff0c;某些功能&#xff08;如 Geolocation API、Web…

day10 python机器学习全流程实践

在机器学习的实践中&#xff0c;数据预处理与模型构建是极为关键的环节。本文将回顾数据预处理的全流程&#xff0c;并基于处理后的数据完成简单的机器学习建模与评估&#xff0c;暂不涉及复杂的调参过程。 一、预处理流程回顾 机器学习的成功&#xff0c;很大程度上依赖于高…

4月28号

初认web前端: web标准: HTML:

【Linux系统】systemV共享内存

system V共享内存 在Linux系统中&#xff0c;共享内存是一种高效的进程间通信&#xff08;IPC&#xff09;机制&#xff0c;它允许两个或者多个进程共享同一块物理内存区域&#xff0c;这些进程可以将这块区域映射到自己的虚拟地址空间中。 共享内存区是最快的IPC形式。一旦这…

(七)RestAPI 毛子(Http 缓存/乐观锁/Polly/Rate limiting/异步大文件上传)

文章目录 项目地址一、Http Cache1.1 服务注册1.2 Validation with ETag1. 添加ETagMiddleware中间件2. 创建内存ETag存储器3. 服务注册4. 测试二、使用ETag实现乐观锁2.1 添加乐观锁方法2.2 修改Controller2.3 测试乐观锁三、Rate Limiting3.1 添加速率控制服务1. 在Program里…

2025.4.26_STM32_SPI

1.SPI简介 2.硬件电路 所有SPI设备的SCK(时钟)、MOSI(主机输出从机输入)、MISO(主机输入从机输出)分别连在一起。SCK线只能被主机控制&#xff0c;和I2C相同。 主机另外引出多条SS控制线&#xff0c;分别接到各从机的SS引脚 (SS不用的时候为高电平&#xff0c;当主机需要选中某…

JAVA:单例模式

单例模式是设计模式之一 设计模式&#xff0c;就像古代打仗&#xff0c;我们都听过孙子兵法&#xff0c;把计谋概括下来弄成一种模式&#xff0c;形成一种套路。 软件开发中也有很多场景&#xff0c;多数类似的问题场景&#xff0c;解决方案就形成固定的模式&#xff0c;单例…

脑机接口:重塑人类未来的神经增强革命

引言 人类对大脑的探索从未停止&#xff0c;而脑机接口&#xff08;Brain-Computer Interface, BCI&#xff09;的崛起&#xff0c;正在将科幻电影中的“意念操控”变为现实。 这项技术通过解码脑电信号&#xff0c;实现人脑与外部设备的直接交互&#xff0c;不仅为医疗康复带来…

从SOA到微服务:架构演进之路与实践示例

一、架构演进背景 在软件开发领域&#xff0c;架构风格随着业务需求和技术发展不断演进。从早期的单体架构&#xff0c;到面向服务架构(SOA)&#xff0c;再到如今的微服务架构&#xff0c;每一次变革都是为了解决当时面临的核心问题。 二、SOA架构解析 2.1 SOA核心概念 SOA&…

可灵AI 2.0上线:重新定义AI创作?好莱坞级特效触手可及

2025年4月15日&#xff0c;快手正式发布可灵AI 2.0&#xff0c;这款被誉为“让好莱坞特效师颤抖”的AI工具&#xff0c;以物理引擎级动态生成和电影语言自由操控两大核心技术&#xff0c;彻底颠覆了内容创作的想象边界。上线24小时内&#xff0c;全球用户已用它生成超过100万条…

Mysql存储引擎、锁机制

Mysql存储引擎 InnoDB​&#xff08;MySQL 5.5 及以后版本中的默认存储引擎&#xff09; ​​事务支持​​&#xff1a;支持 ​​ACID 事务​​&#xff0c;适合需要高可靠性的场景&#xff08;如支付、订单&#xff09;。 ​​锁机制​​&#xff1a;默认使用 ​​行级锁​​…

飞蛾扑火算法优化+Transformer四模型回归打包(内含MFO-Transformer-LSTM及单独模型)

飞蛾扑火算法优化Transformer四模型回归打包&#xff08;内含MFO-Transformer-LSTM及单独模型&#xff09; 目录 飞蛾扑火算法优化Transformer四模型回归打包&#xff08;内含MFO-Transformer-LSTM及单独模型&#xff09;预测效果基本介绍程序设计参考资料 预测效果 基本介绍 …

音视频开发---视频编码基础

一、视频编码的必要性 1. 存储与传输成本高 未经编码压缩的原始视频的数据量极大,例如:一般电影的亮度信号采样频率为13.5MHz;色度信号的频带通常为亮度信号的一半或更少,为6.75MHz或3.375MHz。以4:2:2的采样频率为例,Y信号采用13.5MHz,色度信号U和V采用6.75MHz采样,…

手动安装OpenSSL1.1.1

根据报错信息 Could not build the ssl module! Python requires a OpenSSL 1.1.1 or newer&#xff0c;说明当前系统中的 OpenSSL 版本低于 1.1.1&#xff0c;或者 Python 编译时未找到符合要求的 OpenSSL 库。以下是分步解决方案&#xff1a; 1. 检查当前 OpenSSL 版本 首先…

[原创](现代Delphi 12指南):[macOS 64bit App开发]: 跨平台开发同样支持retain()引用计数器处理.

[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C++、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 开发工具: Visual Studio、Delphi、XCode、…

从 “制造” 到 “品牌”:官网建设助力中国企业突围东南亚

在全球产业链重构与区域经济一体化的浪潮下&#xff0c;中国企业出海已从“战略选项”升级为“生存刚需”。东南亚市场因其地理邻近性、人口红利及政策开放性&#xff0c;成为许多中企出海的“首站试验田”。然而&#xff0c;如何在这一文化多元、竞争激烈的市场中建立品牌认知…

iPhone闹钟无法识别调休致用户迟到,苹果客服称会记录反馈

iPhone闹钟无法识别调休致用户迟到&#xff0c;苹果客服称会记录反馈 基于 6 个来源 因“五一”劳动节调休&#xff0c;4月27日&#xff08;周日&#xff09;本应上班&#xff0c;不少iPhone用户却因闹钟未响迟到&#xff0c;“调休”“当苹果闹钟遇到调休”话题登上热搜。苹…