CentOS 7 编译安装 Nginx 并配置 Web、HTTPS、PHP 与反向代理
CentOS 7 编译安装 Nginx 并配置 Web、HTTPS、PHP 与反向代理1. 服务介绍Nginx 是高性能 Web 服务器和反向代理服务器可发布静态网站、终止 HTTPS、把 PHP 请求交给 PHP-FPM并将客户端请求转发到多个后端节点。它常用于网站入口、动静分离、负载均衡和应用网关。本实验使用源码包编译安装 Nginx并完成常见站点功能。2. 准备运行环境示例环境如下| 角色 | IP 地址 | 用途 || --- | --- | --- || Nginx 服务器 | 10.1.100.101 | Web、HTTPS、PHP、反向代理入口 || 后端 Web 1 | 10.1.100.201 | 负载均衡节点 || 后端 Web 2 | 10.1.100.202 | 负载均衡节点 || 测试客户端 | 10.1.100.50 | 浏览器和 curl 验证 |• 操作系统CentOS 7.x。• 操作账号root 或具备 sudo 权限的管理员。• 软件源YUM 可用。• 源码包本实验沿用原始资料中的nginx-1.4.2.tar.gz。生产环境应使用仍受支持的稳定版本。• 网络客户端可访问服务端 80、443 端口Nginx 可访问两个后端节点。开始前检查系统和网络cat /etc/centos-release uname -r ip addr ping -c 3 10.1.100.201 ping -c 3 10.1.100.2023. 相关知识• Nginx 主配置文件由main、events、http、server、location等上下文组成指令必须放在允许的上下文中。• HTTP 和 HTTPS 常用 TCP 80、443。访问失败时先检查监听端口、防火墙、SELinux 和路由。• 修改配置后先执行nginx -t语法正确再重载避免错误配置中断现有服务。•server_name决定虚拟主机匹配测试域名时可先在客户端 hosts 文件中绑定服务器 IP。• PHP 代码不能由 Nginx 自己解释需要通过 FastCGI 转交 PHP-FPM。• 反向代理隐藏后端服务器正向代理代表客户端访问外部网络。Nginx 核心模块不适合作为通用 HTTPS 正向代理完整正向代理通常使用 Squid 等软件。• 负载均衡默认使用轮询也可使用least_conn、ip_hash或权重。必须同时配置健康检查或失败重试策略。• 排错重点/usr/local/nginx/logs/error.log、访问日志、curl状态码、后端连通性和 SELinux 审计日志。4. 实验步骤4.1 安装编译依赖yum install -y gcc gcc-c make pcre-devel zlib-devel openssl-devel useradd -r -s /sbin/nologin nginx4.2 上传并检查源码包在 Windows 客户端使用 SCP 上传源码包在服务器确认文件已经上传ls -lh /root/nginx-1.4.2.tar.gz sha256sum /root/nginx-1.4.2.tar.gz4.3 解压并编译安装cd /root tar -zxvf nginx-1.4.2.tar.gz编译并安装cd /root/nginx-1.4.2 ./configure \ --prefix/usr/local/nginx \ --usernginx \ --groupnginx \ --with-http_ssl_module \ --with-http_stub_status_module make -j2 make install /usr/local/nginx/sbin/nginx -V4.4 配置 systemd 服务创建/etc/systemd/system/nginx.service[Unit] DescriptionNginx Web Server Afternetwork.target [Service] Typeforking PIDFile/usr/local/nginx/logs/nginx.pid ExecStartPre/usr/local/nginx/sbin/nginx -t ExecStart/usr/local/nginx/sbin/nginx ExecReload/usr/local/nginx/sbin/nginx -s reload ExecStop/usr/local/nginx/sbin/nginx -s quit PrivateTmptrue [Install] WantedBymulti-user.targetsystemctl daemon-reload systemctl enable nginx4.5 配置基础网站创建站点目录和首页mkdir -p /data/www/site echo Nginx site on 10.1.100.101 /data/www/site/index.html chown -R nginx:nginx /data/www/site在/usr/local/nginx/conf/nginx.conf的http段加入include /usr/local/nginx/conf/conf.d/*.conf;创建配置目录和/usr/local/nginx/conf/conf.d/site.confmkdir -p /usr/local/nginx/conf/conf.dserver { listen 80; server_name www.example.test; root /data/www/site; index index.html index.php; access_log logs/site_access.log; error_log logs/site_error.log; location / { try_files $uri $uri/ 404; } }客户端 hosts 文件加入10.1.100.101 www.example.test4.6 配置 HTTPS 网站创建实验自签名证书mkdir -p /usr/local/nginx/conf/ssl openssl req -x509 -nodes -newkey rsa:2048 -days 365 \ -keyout /usr/local/nginx/conf/ssl/www.example.test.key \ -out /usr/local/nginx/conf/ssl/www.example.test.crt \ -subj /CCN/STZhejiang/LHangzhou/OLab/CNwww.example.test chmod 600 /usr/local/nginx/conf/ssl/www.example.test.key在site.conf增加 HTTPS 虚拟主机server { listen 443 ssl; server_name www.example.test; root /data/www/site; ssl_certificate /usr/local/nginx/conf/ssl/www.example.test.crt; ssl_certificate_key /usr/local/nginx/conf/ssl/www.example.test.key; ssl_protocols TLSv1.2; location / { try_files $uri $uri/ 404; } }自签名证书只用于实验。生产环境应使用可信 CA 证书并启用当前安全协议和加密套件。4.7 配置 PHP 解析yum install -y epel-release php php-fpm sed -i s/^user apache/user nginx/ /etc/php-fpm.d/www.conf sed -i s/^group apache/group nginx/ /etc/php-fpm.d/www.conf systemctl enable --now php-fpm echo ?php echo PHP OK .PHP_VERSION; ? /data/www/site/info.php chown nginx:nginx /data/www/site/info.php在两个server段中按需加入location ~ \.php$ { try_files $uri 404; include fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }4.8 配置反向代理、动静分离和负载均衡创建/usr/local/nginx/conf/conf.d/proxy.confupstream backend_pool { least_conn; server 10.1.100.201:80 max_fails3 fail_timeout10s; server 10.1.100.202:80 max_fails3 fail_timeout10s; keepalive 16; } server { listen 80; server_name app.example.test; location /static/ { alias /data/www/static/; expires 7d; } location / { proxy_pass http://backend_pool; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Connection ; proxy_next_upstream error timeout http_502 http_503 http_504; } }准备静态测试文件mkdir -p /data/www/static echo static file from nginx /data/www/static/test.txt chown -R nginx:nginx /data/www/static客户端 hosts 文件再加入10.1.100.101 app.example.test4.9 检查配置并启动服务/usr/local/nginx/sbin/nginx -t systemctl restart nginx systemctl status nginx --no-pager firewall-cmd --permanent --add-servicehttp firewall-cmd --permanent --add-servicehttps firewall-cmd --reload5. 验证结果5.1 服务端检查/usr/local/nginx/sbin/nginx -t systemctl status nginx --no-pager systemctl status php-fpm --no-pager ss -lntp | grep -E :80|:443|:9000 curl -I http://127.0.0.1/ curl -kI https://www.example.test/ tail -n 50 /usr/local/nginx/logs/error.log journalctl -u nginx -n 50 --no-pager5.2 客户端功能验证curl -I http://www.example.test/ curl -k https://www.example.test/ curl http://www.example.test/info.php curl http://app.example.test/static/test.txt for i in {1..6}; do curl -s http://app.example.test/; done基础页面返回200HTTPS 能建立连接PHP 页面显示版本静态文件由 Nginx 返回多次访问代理域名能到达后端节点说明配置生效。5.3 后端故障验证停止一个后端 Web 服务再连续访问代理域名for i in {1..6}; do curl -s http://app.example.test/; done请求仍能由另一台后端处理同时错误日志记录失败节点说明反向代理失败重试生效。恢复后端后再次验证轮询结果。

相关新闻

nlp-pytorch-zh高级技巧:神经网络基础组件完全解析

nlp-pytorch-zh高级技巧:神经网络基础组件完全解析

nlp-pytorch-zh高级技巧:神经网络基础组件完全解析 【免费下载链接】nlp-pytorch-zh 《Natural Language Processing with PyTorch》中文翻译 项目地址: https://gitcode.com/gh_mirrors/nl/nlp-pytorch-zh 你是否想要快速掌握PyTorch神经网络的核心组件&…

2026/10/8 19:06:57 阅读更多 →
全网苦等三月,DeepSeek V4正式版将发布!性能接近Opus 4.8,价格仍是屠夫

全网苦等三月,DeepSeek V4正式版将发布!性能接近Opus 4.8,价格仍是屠夫

DeepSeek V4正式版即将登场,两大版本引关注全网翘首以盼近三个月,DeepSeek V4正式版最早明日发布,最迟也在这几天。目前部分人已获得其灰度测试权限,该版本有DeepSeek V4 Flash和DeepSeek V4 Pro两个版本。博主AiBattle给出了判断…

2026/10/9 12:22:40 阅读更多 →
深入学LangChain 官方文档(十)Middleware 首讲

深入学LangChain 官方文档(十)Middleware 首讲

精读 LangChain 官方文档(十)Middleware 首讲 本篇对应的官方文档 Middleware overview:Middleware 在 Agent 执行中的位置、适用场景与内置/自定义入口。Custom middleware:node-style、wrap-style hooks,状态更新、执…

2026/10/9 9:29:16 阅读更多 →

最新新闻

LiteLLM:大模型API统一调用协议层实践指南

LiteLLM:大模型API统一调用协议层实践指南

1. 从“调用大模型像调用API”说起:LiteLLM到底在解决什么真问题? 你有没有过这样的经历:上周刚用OpenAI的gpt-4-turbo跑通一个客服对话系统,这周客户突然要求切换成Anthropic的claude-3-haiku——结果发现,光是把 op…

2026/10/14 8:52:31 阅读更多 →
HarmonyOS NEXT Tab页切换事件处理与优化实践

HarmonyOS NEXT Tab页切换事件处理与优化实践

1. 项目概述 在HarmonyOS应用开发中,Tab布局是常见的界面组织形式。当用户在不同Tab页之间切换时,开发者经常需要捕获"将要展示"的事件,以便在目标Tab页显示前执行数据预加载、状态检查等关键操作。这个需求看似简单,但…

2026/10/14 8:52:31 阅读更多 →
Three.js进阶:WebGPU渲染器、粒子系统与性能优化

Three.js进阶:WebGPU渲染器、粒子系统与性能优化

1. 这期圈子里最值得跟进的三个动向Three.js 今日案例&热点185期,这两天圈子里讨论最多的是几个和版本、渲染底层相关的消息。很多人可能还停留在“Three.js 就是WebGL的封装库”这个印象里,但这期的热点几乎都在讲同一件事:新渲染管线、…

2026/10/14 8:52:31 阅读更多 →
UGUI性能优化从Canvas和RectTransform基础原理开始

UGUI性能优化从Canvas和RectTransform基础原理开始

1. 为什么“UGUI优化”不是性能调优的终点,而是开发流程的起点 很多人看到“UGUI优化”四个字,第一反应是:项目卡顿了?Draw Call爆表了?Canvas重建太频繁?于是立刻打开Profiler,盯着Batch Count…

2026/10/14 8:52:31 阅读更多 →
Flutter在OpenHarmony上的家庭健康应用开发实践

Flutter在OpenHarmony上的家庭健康应用开发实践

1. 项目概述最近在OpenHarmony平台上用Flutter开发了一款家庭健康管理应用,主要包含两大核心功能模块:家庭药箱管理和体重记录。这个项目让我深刻体会到Flutter在跨平台开发中的优势,特别是在新兴的OpenHarmony生态中的适配表现。作为开发者&…

2026/10/14 8:52:31 阅读更多 →
PS5游戏兼容层技术解析:系统调用翻译与图形API转换实战

PS5游戏兼容层技术解析:系统调用翻译与图形API转换实战

1. 这个项目到底在解决什么问题 第一次看到“让PS5游戏跑在PC上”这个说法,我第一反应是:又来了,每隔一段时间就会有类似的标题冒出来。但点进去仔细看完这个17.2K Star的项目之后,我发现它跟以前那些“模拟器”路子完全不一样&am…

2026/10/14 8:51:30 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →