CentOS 6.5 下 Nginx 配置详解
环境准备与安装
在 CentOS 6.5 系统中部署 Nginx 前,需确保系统已更新至最新状态,并安装必要的依赖库,执行以下命令完成基础环境搭建:
# 更新系统软件包 yum update -y # 安装编译工具及依赖库 yum install -y gcc pcre-devel zlib-devel openssl-devel make wget
通过官方源下载稳定版 Nginx(以 1.22.0 为例),并编译安装:
# 下载源码包 wget https://nginx.org/download/nginx-1.22.0.tar.gz # 解压并进入目录 tar -zxvf nginx-1.22.0.tar.gz && cd nginx-1.22.0 # 配置编译参数(启用 HTTPS 模块) ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module # 编译并安装 make && make install
安装完成后,可通过 /usr/local/nginx/sbin/nginx -v
验证版本信息。
Nginx 核心配置文件解析
Nginx 的核心配置位于 /usr/local/nginx/conf/nginx.conf
,主要包含 全局块、events 块、http 块 三大模块,各模块功能如下:
模块类型 | 关键指令示例 | 功能说明 |
---|---|---|
全局块 | user nobody; | 设置运行用户 |
worker_processes auto; | 工作进程数(自动适配 CPU 核心) | |
events 块 | worker_connections 1024; | 单个工作进程最大连接数 |
use epoll; | 使用高效事件模型(Linux 特有) | |
http 块 | include mime.types; | 引入 MIME 类型映射文件 |
default_type application/octet-stream; | 默认响应类型 | |
server 块(虚拟主机) | listen 80; | 监听端口 |
server_name example.com; | 绑定域名 | |
location 块 | location / { root html; } | URI 路径匹配与资源定位 |
示例配置片段:
http { include mime.types; default_type application/octet-stream; # 日志格式定义 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log logs/access.log main; sendfile on; keepalive_timeout 65; # 虚拟主机配置 server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
常用场景配置实践
虚拟主机多站点部署
若需在同一服务器上托管多个网站,可添加多个 server
块,通过 server_name
区分域名:
server { listen 80; server_name blog.example.com; root /data/blog; index index.php; } server { listen 443 ssl; server_name shop.example.com; root /data/shop; index index.html; # SSL 证书配置 ssl_certificate /etc/nginx/ssl/shop.crt; ssl_certificate_key /etc/nginx/ssl/shop.key; ssl_protocols TLSv1.2 TLSv1.3; }
反向代理与负载均衡
将客户端请求转发至后端应用服务器,需在 location
块中配置 proxy_pass
:
upstream backend { server 192.168.1.10:8000 weight=3; # 权重分配 server 192.168.1.11:8000; } server { listen 80; server_name api.example.com; location /api/ { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
静态资源优化
通过设置缓存头和压缩提升访问速度:
location ~* .(jpg|jpeg|png|css|js)$ { expires 30d; # 缓存 30 天 gzip on; # 启用 Gzip 压缩 gzip_types text/css application/javascript; }
服务管理与故障排查
服务启动与自启
使用 systemd 或 init.d 脚本管理 Nginx 服务:
# 启动服务 /usr/local/nginx/sbin/nginx # 重载配置(无需重启) /usr/local/nginx/sbin/nginx -s reload # 开机自启(CentOS 6.5 采用 init.d) chkconfig --add nginx chkconfig nginx on
常见错误排查
- 端口冲突:若 80 端口被占用,修改
listen
指令为其他端口(如 8080)。 - 权限不足:确保 Nginx 用户(默认
nobody
)对站点目录有读权限。 - 配置语法错误:通过
nginx -t
检查配置文件合法性。
安全加固建议
限制 IP 访问:在
server
块前添加允许列表:allow 192.168.1.0/24; deny all;
隐藏版本信息:在
http
块中添加:server_tokens off;
定期更新:关注 Nginx 官方发布的安全公告,及时升级版本。
相关问答 FAQs
Q1:如何解决 Nginx 无法加载 PHP 文件的问题?
A:需确认两点:
- 确保 PHP-FPM 已正确安装并运行(可通过
ps aux | grep php-fpm
查看); - 在 Nginx 配置的
location
块中添加 FastCGI 参数:location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
Q2:为什么访问 Nginx 时出现 403 Forbidden 错误?
A:通常由权限或路径配置错误导致,检查:
- 站点根目录是否存在且 Nginx 有读取权限(如
chmod 755 /data/wwwroot
); index
指令指定的首页文件是否存在于根目录;- SELinux 是否开启(若开启,需执行
setsebool -P httpd_can_network_connect 1
放行网络访问)。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复