当前位置: 首页 > ai >正文

Orange的运维学习日记--39.Nginx详解与服务部署

Orange的运维学习日记–39.Nginx详解与服务部署

文章目录

  • Orange的运维学习日记--39.Nginx详解与服务部署
    • 简介
    • 常见服务器
      • Apache
      • Nginx
      • Lighttpd
      • Tomcat
      • IIS
  • Nginx 安装与深度配置
    • 安装 nginx
    • 启用 UserDir
    • 虚拟主机
      • 基于域名
      • 基于端口
    • 配置 SSL/TLS
      • 生成自签名证书
      • 部署证书
    • 配置基本认证
    • 支持动态脚本
      • PHP
      • FastCGI
    • 部署反向代理
      • 角色说明
      • 代理服务器配置
      • 真实服务器配置
      • 真实服务器配置

简介

Web 也称为 WWW(World Wide Web)中文名为万维网 主要功能是提供在线信息浏览服务
Web 服务器可以为 Internet 用户提供 WWW、Email、FTP 等多种网络服务

在这里插入图片描述

常见服务器

Apache

Apache HTTP Server 是世界上应用最广泛的 Web 服务器
开放源码、跨平台、模块丰富 支持动态模块加载和多种语言运行环境
属于重量级产品 在高并发场景下速度和性能不及轻量级服务器 内存开销也较高

Nginx

Nginx 是高性能 HTTP 和反向代理服务器 使用 epoll、kqueue、eventport 等高效 I/O 模型
在高并发场景下可支持 5 万以上并发连接 系统资源消耗低 运行稳定
同时内置负载均衡、缓存、限流等功能 适合高性能站点部署

Lighttpd

Lighttpd 是针对高性能网站设计的轻量级 Web 服务器
内存开销低、CPU 占用率低 模块丰富 支持 FastCGI、CGI、Auth、输出压缩、URL 重写及 Alias
适合小型或中型网站对资源消耗有严格要求的场景

Tomcat

Tomcat 是开源的 Java Web 应用容器 实现 Servlet 和 JSP 规范
符合 Apache-Jakarta 规范 对 Java Web 应用支持友好
对静态文件和高并发处理能力相对较弱 适合纯 Java 应用环境

IIS

Internet Information Services(IIS)是 Microsoft 提供的 Web 平台
包含 Web、FTP、NNTP、SMTP 等服务 提供图形化管理工具与 ISAPI 接口
支持数据库连接器 方便在 Windows 平台上快速搭建企业级网站


Nginx 安装与深度配置

安装 nginx

yum install -y nginx
systemctl enable --now nginx
  • 准备默认主页

    mv /usr/share/nginx/html/index.html{,.ori}
    echo Hello World From Nginx > /usr/share/nginx/html/index.html
    
  • 防火墙放行 HTTP

    firewall-cmd --add-service=http --permanent
    firewall-cmd --reload
    
  • 客户端测试

    • 修改 hosts 文件 指向到 Nginx 服务器

      10.1.8.10 www.laoma.cloud
      
    • 执行 curl

      curl http://www.laoma.cloud
      

启用 UserDir

在用户主目录下提供个人网站访问

  1. 修改主配置

    server {location ~ ^/~(.+?)(/.*)?$ {alias /home/$1/public_html$2index index.html index.htm}
    }
    
  2. 重启服务 并开启 SELinux 主目录支持

    systemctl restart nginx
    setsebool -P httpd_enable_homedirs on
    
  3. 准备测试页面

    chmod 711 /home/laoma
    mkdir -m 755 /home/laoma/public_html
    cat > /home/laoma/public_html/index.html << EOF
    <html><body><div style="width:100%;font-size:40px;font-weight:bold;text-align:center">Nginx UserDir Test Page</div></body>
    </html>
    EOF
    
  4. 访问测试

    curl http://www.laoma.cloud/~laoma/
    

虚拟主机

基于域名

server {server_name web1.laoma.cloudroot /usr/share/nginx/web1
}
server {server_name web2.laoma.cloudroot /usr/share/nginx/web2
}

基于端口

server {listen 8081server_name www.laoma.cloudroot /usr/share/nginx/8081
}
server {listen 8082server_name www.laoma.cloudroot /usr/share/nginx/8082
}

配置 SSL/TLS

生成自签名证书

openssl genrsa -out www.key 2048
openssl req -new -key www.key -out www.csr -subj "/C=CN/ST=JS/L=NJ/O=LM/OU=DEVOPS/CN=www.laoma.cloud/emailAddress=laoma@laoma.cloud"
openssl x509 -req -days 3650 -in www.csr -signkey www.key -out www.crt

部署证书

  1. 创建目录 并移动证书文件

    mkdir -p /etc/ssl/certs/www.laoma.cloud
    mv www.key www.crt /etc/ssl/certs/www.laoma.cloud
    
  2. 配置 HTTPS 站点

    server {listen 443 ssl http2 default_serverlisten [::]:443 ssl http2 default_serverserver_name www.laoma.cloudroot /usr/share/nginx/htmlssl_certificate /etc/ssl/certs/www.laoma.cloud/www.crtssl_certificate_key /etc/ssl/certs/www.laoma.cloud/www.key
    }
    
  3. HTTP 重定向到 HTTPS

    server {listen 80 default_serverlisten [::]:80 default_serverserver_name www.laoma.cloudreturn 301 https://$host$request_uri
    }
    
  4. 防火墙放行 HTTPS

    firewall-cmd --add-service=https --permanent
    firewall-cmd --reload
    
  5. 测试

    curl http://www.laoma.cloud
    curl -k https://www.laoma.cloud
    

配置基本认证

  1. 安装工具

    yum install -y httpd-tools
    
  2. 在 SSL 服务器配置中添加

    location /auth-basic/ {auth_basic "Basic Auth"auth_basic_user_file /etc/nginx/.htpasswd
    }
    
  3. 重启 Nginx 并创建用户

    systemctl restart nginx
    htpasswd -c /etc/nginx/.htpasswd laoma
    
  4. 准备测试页面

    mkdir -p /usr/share/nginx/html/auth-basic
    cat > /usr/share/nginx/html/auth-basic/index.html << EOF
    <html><body><div style="width:100%;font-size:40px;font-weight:bold;text-align:center">Test Page for Basic Authentication</div></body>
    </html>
    EOF
    
  5. 测试访问

    curl http://www.laoma.cloud/auth-basic/
    

支持动态脚本

PHP

yum install -y php php-fpm php-gd php-common php-pear php-mbstring php-mcrypt
systemctl enable --now php-fpm
php -v
echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/info.php
curl http://www.laoma.cloud/info.php

FastCGI

  1. 安装 fcgiwrap

    yum install -y fcgiwrap
    
  2. 配置 fcgiwrap

    • /etc/nginx/fcgiwrap.conf
      

      :

      location /cgi-bin/ {gzip offroot /usr/share/nginxfastcgi_pass unix:/var/run/fcgiwrap.socketinclude /etc/nginx/fastcgi_paramsfastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name
      }
      
    • 将 include 加入站点配置 重启 Nginx

      systemctl restart nginx
      
  3. 创建 systemd 单元并启用

    • /usr/lib/systemd/system/fcgiwrap.socketfcgiwrap.service 按示例编写

    • 启用服务 并处理 SELinux 策略

      systemctl enable --now fcgiwrap.socket
      setsebool -P httpd_can_network_connect on
      
  4. 准备测试 CGI 脚本

    cat > /usr/share/nginx/cgi-bin/index.cgi << 'EOF'
    #!/usr/bin/python3
    print("Content-type: text/html\n")
    print("<html><body><div style='width:100%;font-size:40px;font-weight:bold;text-align:center'>CGI Script Test Page</div></body></html>")
    EOF
    chmod +x /usr/share/nginx/cgi-bin/index.cgi
    curl http://www.laoma.cloud/cgi-bin/index.cgi
    

部署反向代理

角色说明

  • 代理服务器 proxy 10.1.8.20
  • 真实服务器 server 10.1.8.10

代理服务器配置

echo '10.1.8.10 www.laoma.cloud' >> /etc/hosts
yum install -y nginx
systemctl enable --now nginx
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
server {listen 80 default_serverlisten [::]:80 default_serverserver_name _proxy_redirect offproxy_set_header X-Real-IP $remote_addrproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_forproxy_set_header Host $http_hostlocation /proxy/ {proxy_pass http://www.laoma.cloud/}
}
setsebool -P httpd_can_network_connect on
systemctl restart nginx

真实服务器配置

yum install -y nginx
systemctl enable --now nginx
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
echo hello laoma > /usr/share/nginx/html/test.html
curl http://www.laoma.cloud/test.htmlproxy_pass http://www.laoma.cloud/}
}
setsebool -P httpd_can_network_connect on
systemctl restart nginx

真实服务器配置

yum install -y nginx
systemctl enable --now nginx
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
echo hello laoma > /usr/share/nginx/html/test.html
curl http://www.laoma.cloud/test.html
http://www.xdnf.cn/news/17501.html

相关文章:

  • 【liunx】web高可用---nginx
  • GSON 框架下百度天气 JSON 数据转 JavaBean 的实战攻略
  • ZooKeeper和Reids做分布式锁的区别?
  • Notepad--:国产跨平台文本编辑器,Notepad++ 的理想替代方案
  • 车载软件架构 --- 车辆量产后怎么刷写Flash Bootloader
  • 【数据结构入门】二叉树(1)
  • Redis7 GEO功能介绍与电商场景案例解析
  • Android模块化架构深度解析:从设计到实践
  • HTML5中华美食网站源码
  • (Arxiv-2025)Phantom-Data:迈向通用的主体一致性视频生成数据集
  • LangChain框架之 invoke() 方法
  • 【SpringBoot】02 基础入门-什么是Spring Boot?:Spring与SpringBoot
  • CLIP在文生图模型中的应用
  • Unity笔记(五)知识补充——场景切换、退出游戏、鼠标隐藏锁定、随机数、委托
  • redis笔记(二)
  • 深入解析游戏引擎(OGRE引擎)通用属性系统:基于Any类的类型安全动态属性设计
  • 《深度剖析前端框架中错误边界:异常处理的基石与进阶》
  • Rust 实战五 | 配置 Tauri 应用图标及解决 exe 被识别为威胁的问题
  • 麒麟系统使用-PATH设置
  • 【96页PPT】华为IPD流程管理详细版(附下载方式)
  • 34-Hive SQL DML语法之查询数据-3
  • 游戏盾是什么?
  • Vibe Coding 自然语言驱动 AI 编程方式
  • 在Linux中部署tomcat
  • Android Coil3视频封面抽取封面帧存Disk缓存,Kotlin
  • 自然语言处理实战:用LSTM打造武侠小说生成器
  • GraalVM !拥抱云原生的 JVM
  • Python 的浅拷贝 vs 深拷贝(含嵌套可变对象示例与踩坑场景)
  • 人工智能正在学习自我提升的方式
  • TF-IDF提取关键词(附实战案例)