web技术与nginx网站服务
一、Web服务基础概念
- Web服务器核心功能
- 通过HTTP/HTTPS协议提供网页内容,支持HTML、CSS、JavaScript等静态资源,动态内容需结合后端语言(如PHP、Python)处理36。
- 常用软件:Nginx、Apache、Lighttpd。Nginx以高并发、低资源消耗著称,适用于静态资源处理及反向代理场景13。
- HTTP协议关键特性
- 基于请求-响应模型,支持GET、POST等方法。
- 跨域问题由浏览器同源策略引发,可通过CORS配置解决7。
二、Nginx核心特性与优势
- Nginx的核心优势
- 高并发性能:基于异步非阻塞事件驱动模型(epoll/kqueue),单进程可处理数万并发连接,内存占用低(3万并发下内存消耗低于200MB)16。
- 多功能支持:除Web服务外,提供反向代理、负载均衡、缓存加速(类似Squid)、SSL/TLS加密等功能19。
- 轻量高效:静态文件处理性能是Apache的3倍以上,动态内容可通过代理转发至后端服务(如PHP-FPM)36。
- 与Apache对比
- 资源占用:Nginx的Worker进程模型更高效,Apache基于多线程/进程,并发高时资源消耗大13。
- 适用场景:静态业务首选Nginx;动态业务可搭配后端处理,综合场景推荐Nginx16。
三、Nginx安装与配置
- 编译安装步骤
# 安装依赖
yum install -y pcre-devel openssl-devel zlib-devel
# 创建专用用户
useradd -s /sbin/nologin -M www
# 编译配置(常用模块)
./configure --prefix=/usr/local/nginx \
--user=www --group=www \
--with-http_stub_status_module \
--with-http_ssl_module
make && make install
# 启动与常用命令
/usr/local/nginx/sbin/nginx
nginx -s reload # 平滑重启
nginx -s stop # 停止服务:cite[1]:cite[4]
- 配置文件结构
- 主配置文件(nginx.conf):分区块组织,包括:
- Main区:全局配置(如worker_processes、error_log)。
- Events区:连接处理模型(如worker_connections)。
- HTTP区:包含多个Server块,定义虚拟主机、反向代理规则等14。
- Server块示例:
- 主配置文件(nginx.conf):分区块组织,包括:
server {
listen 80;
server_name www.example.com;
location / {
root /data/www;
index index.html;
}
# 反向代理配置
location /api/ {
proxy_pass http://backend_server;
}
}
四、Nginx核心功能实践
- 反向代理与负载均衡
- 反向代理:隐藏后端服务器,提升安全性,示例配置:
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
}
-
- 负载均衡算法:轮询(默认)、权重(weight)、IP哈希(ip_hash)等69。
upstream backend {
server 10.0.0.1:8080 weight=5;
server 10.0.0.2:8080;
}
- 静态资源优化
- Gzip压缩:减少传输体积,配置示例:
gzip on;
gzip_types text/plain text/css application/json;
gzip_comp_level 6;
-
- 缓存控制:通过expires设置浏览器缓存:
location ~* \.(jpg|css|js)$ {
expires 30d;
}
- 安全配置
- 防盗链:限制非本站资源引用:
location ~* \.(jpg|png)$ {
valid_referers none blocked www.example.com;
if ($invalid_referer) { return 403; }
}
-
- IP访问控制:限制恶意IP:
location /admin/ {
allow 192.168.1.0/24;
deny all;
}
-
- 隐藏版本信息:防止漏洞扫描:
server_tokens off; # 在http块中配置:cite[10]
五、性能优化与故障排查
- 性能调优参数
- Worker进程:数量与CPU核数一致,绑定CPU减少上下文切换:
worker_processes auto;
worker_cpu_affinity auto;
-
- 连接数优化:
worker_rlimit_nofile 65535; # 最大打开文件数
events {
worker_connections 10240; # 单进程并发连接
}
- 故障排查三部曲
- 网络层:ping检查连通性。
- 端口层:telnet IP端口验证端口开放。
- 应用层:curl -I URL检查HTTP响应16。