尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
云计算运维学习day9--LAMP架构(1)--Nginx
目录LAMP架构一.基本概念1.1作用与功能二Nginx的相关功能与实现2.1实现Nginx的平滑升级2.1.1准备工作2.1.2下载两个版本的服务压缩包并解压2.1.3安装软件包服务的相关依赖2.1.4编译安装1.30.0版本的nginx2.1.5配置1.30.4版本的nginx模块并完成编译不要安装2.1.6模拟1.30.0版本的nginx运行2.1.7进行nginx版本的平滑升级2.1.8如果新进程不影响业务则停止旧版本的nginx服务2.1.9如果新进程影响业务的运行则回退至原版本的nginx服务2.1.10隐藏nginx的版本号(按需更改)2.2Nginx的并发优化2.2.1准备工作2.2.2修改用户进程可打开的文件数限制2.2.3解除Linux系统级可打开的最大文件数2.2.4编辑nginx.conf文件增设更大的文件处理,设置并发连接数2.2.5修改nginx的并发连接数补充2.3完成Nginx的反向代理负载均衡任务2.3.1准备工作2.3.2编辑nginx配置文件加入虚拟服务器2.3.3完成域名配置用windows测试需要提前配置http证书2.3.4测试2.3.5查看网站的cookie补充2.4nginx模块编译增加第三方模块2.4.1增加静态编译模块nginx1.3版本后自带模块2.5安全控制2.5.1限制并发连接数2.5.2限制请求数2.5.3限制处理速率2.6自动索引与缓存设置2.6.1自动索引2.6.2缓存设置2.6.3禁用日志目录补充2.7日志轮转与可视化2.7.1日志轮转2.7.2日志可视化2.8其他配置2.8.1站点限制2.8.2解决中文乱码2.9虚拟主机与httpd配置2.9.1定义虚拟主机2.9.2配置https服务的SSL认证2.10重定向2.10.1.端口重定向2.10.2域名重定向2.11配置防盗链LAMP架构Linux系统Apache/nginxMysql/mariabdPHP一.基本概念1.1作用与功能1.作用一个高性能的 HTTP 服务器和反向代理服务器同时也是一个邮件代理服务器和通用的 TCP/UDP 代理服务器。2.服务的相关文件2.1nginx功能配置文件/usr/local/nginx/conf/nginx.conf(默认)2.2nginx程序文件/usr/local/nginx/sbin/nginx3.功能高性能 Web 服务器处理静态文件HTML、图片、CSS速度极快支持数万并发连接是 Apache 的理想替代者。反向代理与负载均衡将客户端请求分发到后端多台服务器如 Tomcat、Node.js提升系统性能和可用性还能隐藏真实服务器架构。API 网关和缓存作为统一入口进行路由转发、SSL 加密卸载并缓存后端响应减轻应用服务器压力。动静分离动态请求如 PHP转发后端静态资源由 Nginx 直接返回优化网站响应速度。二Nginx的相关功能与实现2.1实现Nginx的平滑升级1.作用在对nginx进行版本升级的时候运行在系统上的nginx不终止即升级的同时不干扰nginx的正常运行2.1.1准备工作1.完成任务将版本为1.30.0的nginx服务平滑升级到1.30.42.1.2下载两个版本的服务压缩包并解压1.从官网下载版本1.30.0的nginx和1.30.4版本的源码包到本机目录wget https://nginx.org/download/nginx-1.30.0.tar.gz #1.30.0版本 wget https://nginx.org/download/nginx-1.30.4.tar.gz #1.30.4版本2.将两个压缩包解压到当前目录下tar -xvf nginx-1.30.0.tar.gz #解压1.30.3版本的压缩包 tar -xvf nginx-1.30.4.tar.gz #解压1.30.4版本的压缩包2.1.3安装软件包服务的相关依赖yum install -y gcc gcc-c prce-devel zlib-devel openssl-devel注意如果还有其他需求请按照相应的./configure要求安装相关依赖2.1.4编译安装1.30.0版本的nginx1. 进入解压后版本为1.30.0的nginx目录下cd nginx-1.30.02.启用模块并检查配置文件信息生成makefile文件./configure --with-http_ssl_module --with-http_stub_status_module #启用SSL和状态监控模块3.编译并安装软件make make install #编译并安装4.生成软链接将程序加入环境变量当中方便调用ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/nginx #前面是二进制文件地址后面是环境变量地址 which nginx #检查是否加入环境变量当中 nginx -v #查看nginx的版本号2.1.5配置1.30.4版本的nginx模块并完成编译不要安装1.进入1.30.4版本的nginx目录下配置与1.30.0版本的nginx相同的模块以防服务出错cd nginx-1.30.4 ./configure --with-http_ssl_module --with-http_stub_status_module #启用SSL和状态监控模块2.make完成编译不要执行安装否则会直接覆盖掉原先的nginx程序文件make2.1.6模拟1.30.0版本的nginx运行1.首先需要提前禁用掉httpd服务否则会占用nginx的端口导致无法运行systemctl stop httpd #关闭httpd服务2.查看当前的nginx版本执行服务后查看nginx -v #查看当前的nginx版本 nginx #运行nginx服务 ps ax | grep nginx #查看nginx的进程ID2.1.7进行nginx版本的平滑升级1.复制老版本的nginx执行程序命名为nginx.oldcp -f /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old2.使用新版本的nginx程序文件替代原来的执行程序文件,查看版本cp -f /nginx-1.30.4/objs/nginx /usr/local/nginx/sbin/nginx #用新版本的nginx替代老版本的nginx服务 nginx -v3.关闭旧master进程查看新进程新旧进程一起工作kill -USR2 PID #关闭旧master进程 ps ax | grep nginx2.1.8如果新进程不影响业务则停止旧版本的nginx服务kill -WINCH PID(旧) #关闭旧的worker进程 ps aux | grep nginx2.1.9如果新进程影响业务的运行则回退至原版本的nginx服务cp -f /usr/local/nginx/sbin/nginx.old /usr/local/nginx/sbin/nginx #还原nginx程序 kill -HUP PID(旧) #唤醒原进程 kill -WINCH PID(新) #回收新版本的worker进程 kill -QUIT PID(新) #杀死新进程2.1.10隐藏nginx的版本号(按需更改)1.默认情况下客户端访问服务端时会查看到nginx的版本号如下图所示。为了安全我们可以选择隐藏版本号curl -I 服务端域名或IP2.关闭正在运行的nginx进入nginx的源码目录修改 src/core/nginx.h 文件nginx -s stop #关闭nginx cd nginx-1.30.4 #进入源码目录 vim src/core/nginx.h3.重新配置与之前配置相同编译nginx源码cd nginx-1.30.4 #进入源码目录 ./configure --http_ssl_module --http-sub_status_module #配置与你之前配置的功能一致 make #只编译不安装4.使用新程序覆盖原来的老程序,启动服务cp -f ogjs/nginx /usr/local/nginx/sbin/nginx nginx5.使用客户端再次访问服务端curl -I 192.168.7.1402.2Nginx的并发优化1.作用增大系统处理的文件上限提高运行速度让 Nginx用更少的资源处理更多的请求响应得更快。2.管理权限内核 selinux 系统2.2.1准备工作完成任务1(打开文件数限制)1.修改用户进程可打开的文件数限制/etc/security/limits.conf2.Linux系统级的最大打开文件数限制/etc/sysctl.conf3.修改网络内核对TCP连接的有关限制4.限制新TCP连接帧队列的大小5.启用tcp连接timewait快速回收和重用2.2.2修改用户进程可打开的文件数限制vim /etc/security/limits.conf #更改用户进程可打开的最大文件数限制尾行添加2.2.3解除Linux系统级可打开的最大文件数vim /etc/sysctl.conf #打开Linux系统级限制 sysctl -p #重启生效2.2.4编辑nginx.conf文件增设更大的文件处理,设置并发连接数vim /usr/local/nginx/sbin/nginx.conf #编辑nginx.conf配置文件 nginx -t #检查语法 nginx -s reload #热重启 ps aux | grep nginx #查看内核数2.2.5修改nginx的并发连接数补充1.作用修改nginx每个任务允许连接的最大设备数2.编辑 nginx.conf配置文件vim /usr/local/nginx/conf/nginx.conf nginx -t nginx -s reload2.3完成Nginx的反向代理负载均衡任务1.作用服务器接收客户端的请求然后把请求转发给内部网络中的真实服务器再将服务器的响应返回给客户端。简单来说用户访问代理服务器代理服务器把请求转发给真实的后端服务器。过程中用户不知道真实后端服务器的存在保护了后端服务器的安全。2.特点负载均衡当后端有多个服务器时反向代理如 Nginx可以把请求轮流转发给不同的机器防止某一台被压垮。安全性与隐藏内网反向代理是外界访问内部网络的唯一入口。真实的 Web 服务器隐藏在防火墙后面只接受代理的访问极大降低了被攻击的风险。静态缓存与加速代理服务器可以缓存那些不常变的图片、CSS、JS 等静态文件直接返回给用户不需要每次都去后端拿从而加速网站响应。SSL 卸载以前需要每台服务器处理 HTTPS 加密现在统一由反向代理处理后端服务器只用 HTTP 通信性能更好。2.3.1准备工作1.已在系统上测试过负载均衡功能且能实现DR模式2.确保后端服务器和调试器开启且处于同一局域网下server4调试器server5,server6后端真实服务器域名www.westos.org(可以在虚拟机上测试windows上需要生成证书否则无法进入)3.完成任务在nginx上实现负载均衡的反向代理任务2.3.2编辑nginx配置文件加入虚拟服务器vim /usr/local/nginx/conf/nginx.conf #添加以下内容 nginx -t nginx -s reload2.3.3完成域名配置用windows测试需要提前配置http证书1.设置调式机和服务器上的域名配置可选三台机子都要配置后端服务器的域名可选前提是 backend 中存放的是服务器上的IP但调试机上的域名必须配置vim /etc/hosts2.在Windows的hosts文件中加入调试机上的反向代理地址否则windows上访问不到你的域名用于测试2.1打开下方搜索栏输入 cmd找到命令提示符程序右键后点击以管理员方式运行2.2进入后输入 cdcd C:\Windows\System32\drivers\etc #进入hosts文件的存放目录2.3编辑 hosts 文件,加入你的主机和域名,完成后关闭notepad hosts不加域名会报下图错误2.3.4测试1.确保三台机器都已开启nginx或 httpd 服务启用一个两个会冲突server4:开启nginx服务server5,server6开启httpd服务提前在/var/www/html/下编辑index.html文件netstat -antlp | grep nginx(或者http) #查看服务是否开启二者服务只能启动一个否则会冲突2.在server7(测试机)上查看反向代理结果curl www1.westos.org3.在 windows 端输入你nginx上定义的域名查看访问结果(需要提前配对证书见下文)看到不同的后端服务器需要使用 ctrl shift delete清除浏览器缓存,不然只能看到一个后端结果如下2.3.5查看网站的cookie补充cookie:也叫浏览器缓存、小饼干网站为了记住你存放在你浏览器里的一小段文本信息。1.编辑nginx.conf文件vim /usr/local/nginx/conf/nginx.conf2.点击域名右边的不安全接着点击cookie即可看到本网站的cookie2.4nginx模块编译增加第三方模块2.4.1增加静态编译模块nginx1.3版本后自带模块静态编译模块与nginx主程序编译到一起极致性能1.下载nginx_sticky_module_ng-0.0.2.tar.gz并解压tar zxf nginx_sticky_module_ng-0.0.2.tar.gz2.进入nginx源码目录将第三放模块加入源码主配置文件并编译安装./configure --prefix/opt/nginx --with-http_ssl_module --with-htstub_status_module --add-module../nginx_sticky_module_ng-0.0.2 make make install2.4.2增加动态编译模块动态编译nginx主程序与模块分开编译适合经常需要扩展模块的场景1.添加配置编译文件./configure --prefix/opt/nginx --with-http_ssl_module --with-http_stub_status_module --with-compat --add-dynamic-module../nginx_sticky_module_ng-0.0.2 make2.平滑升级nginxcd objs/ cp -f nginx /opt/nginx/sbin/nginx3.将模块放入modules目录下mkdir /opt/nginx/modules cp ngx_http_sticky_module.so /opt/nginx/modules/4.加载模块检测语法并重启vim /opt/nginx/conf/nginx.conf load_module modules/ngx_http_sticky_module.so; /opt/nginx/sbin/nginx -t /opt/nginx/sbin/nginx -s reload2.5安全控制2.5.1限制并发连接数作用限制客户端IP对目录下的任务的并发连接数类似网盘下载时允许的最大同时下载量1.进入nginx默认发布目录下创建/download目录,给目录下放一个几百KB的文件用于测试cd /usr/local/nginx/html mkdir download2.编辑nginx.conf 文件在http模块下添加这些内容vim /usr/local/nginx/conf/nginx nginx -t nginx -s reload3.使用另一个虚拟机,模拟并发压力测试作用向 192.168.7.140/download/vim.jpg 发送 10 个请求每次10个并发。测试机ab -c10 -n10 http://192.168.7.140/download/vim.jpg #后面是你目录下的文件名服务端查看日志tail -f /usr/local/nginx/logs/access.log2.5.2限制请求数作用限制客户端的每秒请求数。当客户端同时有多个请求时服务端每秒批量处理1.编辑 nginx.conf 文件添加以下两行内容vim /usr/local/nginx/conf/nginx.conf nginx -t nginx -s reload2.客户端测试机使用ab 命令进行模拟压力测试并检查serevr端的日志客户端ab -c10 -n10 http://192.168.7.140/download/vim.jpg服务端tail -f /usr/local/nginx/logs/access.log2.5.3限制处理速率作用限制客户端的请求速率。类似网盘的下载速率1.编辑nginx.conf文件添加以下内容为了方便效果展示先注释掉限制的请求数vim /usr/local/nginx/conf/nginx.conf nginx -t nginx -s reload2.测试机使用ab命令压力测试查看下载速率文件不要大需要等待几秒ab -c1 -n5 http://192.168.7.140/download/vim.jpg2.6自动索引与缓存设置2.6.1自动索引作用当你访问的目录下没有默认的页面index.html时系统会默认将当前目录以及子目录和子目录下的文件全部展示出来。1.编辑nginx.conf 文件添加以下内容vim /usr/local/nginx/conf/nginx.conf nginx -t nginx -s reload2.在windows端测试访问服务端的IP下的/download目录点击vim.jpg能够展示图片内容注意没有设置自动索引且目录下无index.html会报下图的错误2.6.2缓存设置缓存的作用用空间换时间把数据提前存到离用户更近、访问更快的地方。加速访问用户直接从本地或边缘节点读取数据页面加载速度从“秒级”提升到“毫秒级”。节省带宽命中缓存的数据不再经过网络传输大幅降低服务器出口流量和成本。保护源站大部分重复请求被缓存拦截服务器源站压力骤减能更稳定地处理核心业务逻辑。1.编辑nginx.conf文件vim /usr/local/nginx/conf/nginx.conf nginx -t nginx -s reload2.使用测试机curl服务端的download目录下的vim.jpg文件查看详细信息或者可以尝试刷新网页能够直观感受到缓存的作用快curl -I 192.168.7.140/download/vim.jpg2.6.3禁用日志目录补充作用关闭访问日志access_log或错误日志error_log节省空间1.编辑nginx.conf文件添加以下内容vim /usr/local/nginx/conf/nginx.conf nginx -t nginx -s reload2.7日志轮转与可视化2.7.1日志轮转1.创建并编辑脚本文件并赋权vim /opt/nginx_log.sh chmod x /opt/nginx_log.sh2.Crontab定时任务每天定时存储日志crontab -e #编辑定时任务文件 ll /usr/local/nginx/log #查看日志2.7.2日志可视化1.作用每天晚上12点保存当天的全部日志文件https://goaccess.io/download #goaccess的官方下载地址2.下载并解压goaccess软件wget https://tar.goaccess.io/goaccess-1.8.tar.gz tar -xzvf goaccess-1.8.tar.gz3.安装软件依赖并检查配置文件,编译安装软件yum install -y ncurses-devel GeoIP-devel cd goaccess-1.11/ ./configure --enable-utf8 --enable-geoipmmdb --with-zlib libmaxminddb make make install--enable-utf8启用UTF-8编码支持--enable-geoipmmdb启用IP地理定位功能--with-zlib启用zlib压缩库支持4.用windows网站打开日志日志可视化英文goaccess /usr/local/nginx/logs/access.log -o /usr/local/nginx/html/report.html --log-formatCOMBINED --real-time-html日志可视化中文LANGzh_CN.UTF-8 LC_ALLzh_CN.UTF-8 LC_TIMEen_US.UTF-8 goaccess /usr/local/nginx/logs/access.log -o /usr/local/nginx/html/report.html --log-cormatCOMBINED --real-time-html2.8其他配置2.8.1站点限制1.作用限制外机访问本站点2.编辑nginx.conf文件vim /usr/local/nginx/conf/nginx.conf #添加以下内容 nginx -t nginx -s reload3.测试curl http://127.0.0.1/status #本机 curl http://192.168.7.140/status #外机2.8.2解决中文乱码1.作用解决nginx网页中存在的中文乱码问题2.编辑nginx_conf文件vim /usr/local/nginx/conf/nginx.conf #添加以下内容 nginx -t nginx -s reload2.9虚拟主机与httpd配置2.9.1定义虚拟主机1.作用定义虚拟机主机外机可通过域名直接访问本机的特定目录2.编辑nginx.conf文件vim /usr/local/nginx/conf/nginx.conf #添加以下内容 nginx -t nginx -s reload3.编辑主机和测试机的hosts文件加入域名解析vim etc/hosts4.测试提前在 /ww1下创建并编辑index.html文件服务器上echo web1 /www1/index.html测试机上curl www1.westos.org #你文件中配置的域名2.9.2配置https服务的SSL认证1.作用为域名配置https服务认证确保网站是安全的防止被windows拦截2.安装软件包生成签名证书没有证书 Windows会认为网站存在安全隐患不允许访问yum install -y openssl #安装软件用于配置认证 cd /etc/pki/tls/certs make cert.pem #生成证书3.将生成的证书放到 nginx的配置目录下编辑nginx.conf文件删掉注释添加以下内容mv cert.pem /usr/local/nginx/conf/ vim /usr/local/nginx/conf/nginx.conf nginx -t nginx -s reload4.测试windows上输入你的域名查看能否找到2.10重定向1.作用外机访问你的域名时会自动跳转到另一个域名下网址。Nginx 收到客户端请求后不直接返回内容而是告诉浏览器“你要访问的资源不在这里去另一个 URL 找”。2.10.1.端口重定向1.完成任务将80端口重定向到443端口上即http 转移到 https 上2.编辑nginx.conf文件添加以下内容vim /usr/local/nginx/conf/nginx.conf nginx -t nginx -s reload3.两边同时完成域名的解析工作vim /etc/hosts4.使用测试机进行测试发现域名更改http改成了 https(即80变成了443)curl -I http://www1.westos.org #你定义的域名2.10.2域名重定向1.完成任务将www.westos.org重定向到bss.westos.org2.提前创建你要重定向的目录和文件自定义.mkdir /bss touch /bss/index.html echo www2 /bss/index.html3.注释掉刚才的端口重定向编辑nginx.conf文件添加重定向设置和重定向的目录vim /usr/local/nginx/conf/nginx.conf nginx -t nginx -s reload4.两边同时加上两个域名的域名解析vim /etc/hosts5.用测试机进行测试原域名会重定向到新域名curl -I http://www1.westos.org2.11配置防盗链1.作用防止外机访问本机的文件2.编辑本机的nginx.conf文件添加以下内容本机vim /usr/local/nginx/conf/nginx.conf nginx -t nginx -s reload3.外机上配置apache的盗链配置外机cd /var/www/html #进入httpd默认发布目录 vim index.html systemctl start httpd4.测试外机测试输入域名正常访问输入外机的发布地址返回盗链图片
RELATED

相关推荐

Canvas粒子爆炸动画:30KB轻量级UI反馈解决方案

Canvas粒子爆炸动画:30KB轻量级UI反馈解决方案

简介:这是一份面向前端开发者与网页动效学习者的HTML5 Canvas粒子动画实战资源,聚焦JS特效实现,适用于网页背景增强、文字动态呈现及交互式视觉设计等场景。资源以轻量级代码包形式交付,共6个文件:3个JavaScript文件&a…

📅 2026/10/28 1:39:07
易我数据恢复v14.2.1直装版实战:误删文件快速找回与避坑指南

易我数据恢复v14.2.1直装版实战:误删文件快速找回与避坑指南

简介:易我数据恢复v14.2.1直装版是一款面向普通用户与IT运维人员的专业数据恢复工具,针对误删文件、格式化硬盘、分区丢失、手机U盘及RAID磁盘阵列等场景下的数据丢失问题提供恢复方案。该版本经硬核修改解锁终身技术版,支持大文件恢复&#…

📅 2026/10/28 1:39:07
微信聊天记录导出为3种文档格式|WeChatMsg

微信聊天记录导出为3种文档格式|WeChatMsg

微信聊天记录导出为3种文档格式|WeChatMsg 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMsg 换…

📅 2026/10/28 1:39:07
MORE NEWS

更多资讯

📰

TI AM64x PDMA架构本质:PSI-L与X-Y FIFO协同的数据流编排引擎

1. 为什么AM64x的PDMA不是“换个寄存器就能用”的普通DMATI AM64x系列芯片发布时,不少做工业控制和边缘网关的开发者第一反应是:“又一个带DMA的ARM Cortex-A53平台,照着AM57x或AM62x的DMA驱动改一改就行。”我最初也这么想——直到在某跨平台…

📰

agent-skills 是什么?不是 npm 包,而是能力交付协议

1. “agent-skills”不是功能模块,而是一套可插拔的能力交付协议你第一次在 GitHub 或 CLI 工具文档里看到agent-skills这个词时,大概率会下意识把它当成某个具体工具、SDK 或 npm 包的名字——比如像axios或lodash那样,装上就能用。但实际完…

📰

多微电网电能交互与碳排放优化的ADMM实现

1. 多微电网电能交互与碳排放优化背景微电网作为分布式能源的重要载体,正在从单一个体向集群化方向发展。当多个微电网通过公共连接点(PCC)形成互联系统时,就构成了多微电网(MMG)体系。这种架构下&#xff…

📰

E2V相机串口指令调参:曝光、触发与增益链路避坑

简介:这份文档面向从事机器视觉、质量检测与自动化产线调试的工程人员,围绕E2V UNIIQA高速相机的参数含义与串口操作做系统梳理,帮助初次接触该机型的读者弄清各项配置的实际作用与调整边界。压缩包内共1个docx文件,约966KB&#…

📰

Context-Mode:一种让复杂系统上下文不再混乱的设计模式

做context-mode这套东西之前,我踩了不少坑,也推翻过好几个方案。先把话说在前面:这不是一个能直接“安装即用”的库,也不是一个具体的框架,而是一种设计思路——你把它理解成“上下文管理模式”更准确。它解决的核心问…

📰

从数据源到可视化:省级行政区面积排行榜的工程化做法

做数据整理这行久了,最怕接到的需求不是"帮我写个爬虫",而是"帮我做个排行榜"。前者难在技术,后者难在你以为它简单。前阵子就有朋友找我,说要做一份"中国各省市自治区面积排行榜",发到…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬