web技术与nginx网站环境部署

一、核心概念梳理

1. Web 技术基础

Web 服务本质是客户端(浏览器)<-> 服务器的 HTTP/HTTPS 通信,核心组件包括:

  • Web 服务器:处理 HTTP 请求、返回静态资源(HTML/CSS/JS/ 图片),Nginx 是高性能轻量级选择;
  • 动态解析:若需 PHP/Java/Python 动态页面,需搭配 FastCGI / 反向代理(如 Nginx+PHP-FPM);
  • 静态 / 动态资源:静态资源直接由 Nginx 返回,动态请求转发给后端语言解析器。

2. Nginx 核心作用

  • 反向代理(隐藏后端服务、负载均衡);
  • 静态资源托管(性能比 Apache 高 3-5 倍);
  • 虚拟主机(一台服务器部署多个网站);
  • HTTPS 配置、请求限流、缓存等。

二、Nginx 网站环境部署完整步骤(CentOS 7/8 为例)

前置准备

bash

运行

复制代码
# 1. 安装依赖
yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
# 2. 下载并解压Nginx(以稳定版1.24.0为例)
wget http://nginx.org/download/nginx-1.24.0.tar.gz
tar -zxvf nginx-1.24.0.tar.gz
cd nginx-1.24.0

步骤 1:编译安装 Nginx

bash

运行

复制代码
# 配置编译参数(指定安装路径、启用HTTPS)
./configure --prefix=/usr/local/nginx --with-http_ssl_module
# 编译并安装
make && make install

# 验证安装
/usr/local/nginx/sbin/nginx -v  # 输出版本号则成功

步骤 2:基础配置(部署静态网站)

1. 编辑 Nginx 核心配置文件

bash

运行

复制代码
vim /usr/local/nginx/conf/nginx.conf
2. 核心配置内容(最简版)

nginx

复制代码
worker_processes  1;  # 工作进程数,建议等于CPU核心数
events {
    worker_connections  1024;  # 单进程最大连接数
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;  # 开启高效文件传输
    keepalive_timeout  65;  # 长连接超时时间

    # 虚拟主机配置(一个server对应一个网站)
    server {
        listen       80;  # 监听80端口
        server_name  localhost;  # 域名/服务器IP

        # 网站根目录(需提前创建)
        location / {
            root   /usr/local/nginx/html;  # 静态文件存放路径
            index  index.html index.htm;  # 默认首页
        }

        # 错误页面配置
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
3. 测试配置并启动 Nginx

bash

运行

复制代码
# 检查配置语法
/usr/local/nginx/sbin/nginx -t
# 启动Nginx
/usr/local/nginx/sbin/nginx
# 访问测试(浏览器输入服务器IP)
curl http://localhost  # 输出html页面内容则成功

步骤 3:部署动态网站(Nginx+PHP-FPM 为例)

1. 安装 PHP-FPM

bash

运行

复制代码
yum install -y php php-fpm
# 启动PHP-FPM
systemctl start php-fpm
systemctl enable php-fpm
2. 修改 Nginx 配置,转发 PHP 请求

nginx

复制代码
server {
    listen       80;
    server_name  localhost;

    location / {
        root   /usr/local/nginx/html;
        index  index.php index.html index.htm;  # 优先解析php
    }

    # 转发.php请求到PHP-FPM
    location ~ \.php$ {
        root           /usr/local/nginx/html;
        fastcgi_pass   127.0.0.1:9000;  # PHP-FPM默认端口
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}
3. 测试动态页面

bash

运行

复制代码
# 创建php测试文件
echo "<?php phpinfo(); ?>" > /usr/local/nginx/html/test.php
# 重启Nginx
/usr/local/nginx/sbin/nginx -s reload
# 访问测试
curl http://localhost/test.php  # 输出PHP信息则成功

步骤 4:多网站部署(虚拟主机)

nginx

复制代码
http {
    # 第一个网站
    server {
        listen 80;
        server_name  www.site1.com;  # 域名1
        root /usr/local/nginx/html/site1;
        index index.html;
    }

    # 第二个网站
    server {
        listen 80;
        server_name  www.site2.com;  # 域名2
        root /usr/local/nginx/html/site2;
        index index.html;
    }
}

步骤 5:HTTPS 配置(可选)

bash

运行

复制代码
# 1. 生成SSL证书(自签测试用)
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /usr/local/nginx/conf/nginx.key -out /usr/local/nginx/conf/nginx.crt
# 2. 修改Nginx配置
server {
    listen 443 ssl;
    server_name localhost;
    ssl_certificate      nginx.crt;
    ssl_certificate_key  nginx.key;
    ssl_session_timeout  5m;
    location / {
        root   html;
        index  index.html index.htm;
    }
}

三、常用运维命令

bash

运行

复制代码
# 启动/停止/重启Nginx
/usr/local/nginx/sbin/nginx
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx -s reload  # 平滑重启(不中断服务)

# 查看Nginx进程
ps -ef | grep nginx

# 查看访问日志
tail -f /usr/local/nginx/logs/access.log

# 查看错误日志
tail -f /usr/local/nginx/logs/error.log

四、常见问题排查

  1. 80 端口被占用netstat -anpt | grep :80 找到占用进程,kill -9 PID 杀死后重启;
  2. 配置语法错误nginx -t 会提示具体错误行号,针对性修改;
  3. PHP 页面下载而非解析:检查 fastcgi_pass 配置是否正确,PHP-FPM 是否启动;
  4. 403 Forbidden:检查网站目录权限(需给 nginx 用户可读权限)。

总结

  1. Nginx 部署核心是配置文件 ,需重点关注server块(端口、域名、根目录)和动态请求转发规则;
  2. 静态网站仅需 Nginx 即可部署,动态网站需搭配对应语言解析器(如 PHP-FPM);
  3. 运维关键是通过日志和语法检查定位问题,优先保证端口、路径、权限三大核心要素正确。
相关推荐
小奶包他干奶奶2 小时前
什么是原型链(Prototype Chain)?proto和prototype的关系与区别是什么?
前端·javascript
Access开发易登软件2 小时前
在 Access 实现标签输入控件:VBA + HTML 混合开发实战
前端·数据库·信息可视化·html·excel·vba·access
程序员一点2 小时前
第23章:备份与灾难恢复策略
linux·运维·网络·数据库·openeuler
૮・ﻌ・2 小时前
Nodejs - 02:模块化、npm、yarn、cnpm
前端·npm·node.js·express·yarn·cnpm·包管理工具
大雷神2 小时前
HarmonyOS APP<玩转React>开源教程十:组件化开发概述
前端·react.js·开源·harmonyos
静候光阴2 小时前
为本地ollama设置网页搜索mcp服务器
运维·服务器
艾莉丝努力练剑2 小时前
确保多进程命名管道权限一致的方法
java·linux·运维·服务器·开发语言·网络·c++
小小小小宇2 小时前
React useMemo 深度源码解析
前端
tiany5242 小时前
养虾记录-如何配置多agent和多个飞书机器人独立对话
java·前端·飞书