在CentOS上配置Nginx是一项重要的任务,特别是对于需要高性能Web服务器和反向代理服务的用户,下面将详细介绍如何在CentOS系统上安装、配置和管理Nginx。
一、安装Nginx及其依赖
1. 安装必要的软件包

在开始安装Nginx之前,需要确保系统中已经安装了以下必要的软件包:
gCC编译器
PCRE库(用于正则表达式)
Zlib库(用于压缩功能)
OpenSSL库(用于HTTPS支持)
可以通过以下命令安装这些软件包:

- yum y install gcc pcre pcredevel zlib zlibdevel openssl openssldevel
2. 下载并安装Nginx
从Nginx官方网站下载最新版本的源码包,并进行编译安装,以下是具体步骤:
1、下载Nginx源码:
- wget http://nginx.org/download/nginx1.24.0.tar.gz
2、解压源码包:
- tar zxvf nginx1.24.0.tar.gz
3、进入解压后的目录:
- cd nginx1.24.0
4、配置、编译并安装Nginx:

- ./configure prefix=/usr/local/nginx withhttp_stub_status_module withhttp_ssl_module withpcre=/usr/local/nginx/pcre8.45
- make
- make install
3. 创建软链接
为了方便启动Nginx,可以创建一个软链接:
- ln s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx
二、配置Nginx
1. 检查配置文件的正确性
在修改配置文件后,建议先检查配置文件是否有语法错误:
- nginx t
2. 启动Nginx
使用以下命令启动Nginx服务:
- nginx
访问服务器的IP地址,如果看到Nginx的欢迎页面,说明Nginx已经成功安装并运行。
三、常用Nginx命令
检查配置文件是否正确:
- nginx t
启动Nginx:
- nginx
停止Nginx:
- pkill 9 nginx
重启Nginx服务:
- nginx s reload
查看Nginx版本信息:
- nginx V
四、配置HTTPS
1. 获取SSL/TLS证书
你可以购买SSL证书,也可以通过工具生成自签名证书,以下是生成自签名证书的命令:
- openssl req newkey rsa:2048 nodes keyout /etc/nginx/ssl/nginx.key x509 days 365 out /etc/nginx/ssl/nginx.crt
2. 配置Nginx使用HTTPS
打开NGINX配置文件(通常位于/etc/nginx/nginx.conf
或/usr/local/nginx/conf/nginx.conf
),找到对应的server块,添加以下配置:
- server {
- listen 443 ssl;
- server_name your_domain;
- ssl_certificate /path/to/your_certificate.crt;
- ssl_certificate_key /path/to/your_private_key.key;
- # 其他HTTPS配置项
- }
将your_domain
替换为你的域名或服务器IP地址,将/path/to/your_certificate.crt
和/path/to/your_private_key.key
替换为你证书文件和私钥文件的路径。
3. 重新加载Nginx配置
执行以下命令使配置更改生效:
- sudo nginx t #验证配置文件是否正确
- sudo nginx s reload #重新加载Nginx配置
五、负载均衡与动静分离
1. 负载均衡策略
Nginx提供了多种负载均衡策略,如轮询、加权轮询和IP哈希等,以下是一个简单的轮询配置示例:
- upstream backend {
- server backend1.example.com;
- server backend2.example.com;
- }
- server {
- listen 80;
- server_name example.com;
- location / {
- proxy_pass http://backend;
- }
- }
2. 动静分离
动静分离是指将动态请求和静态资源请求分开处理,以提高性能,以下是一个动静分离的配置示例:
- server {
- listen 80;
- server_name example.com;
- location / {
- root /www/data;
- index index.html index.htm;
- }
- location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
- expires 30d;
- }
- location ~ \.php$ {
- root html;
- fastcgi_pass 127.0.0.1:9000;
- fastcgi_index index.php;
- include fastcgi_params;
- }
- }
相关问答FAQs
Q1:如何修改Nginx默认监听的端口?
A1:要修改Nginx默认监听的端口,可以在Nginx配置文件中找到listen
指令并修改其值,将默认的80端口改为8080:
- server {
- listen 8080;
- server_name example.com;
- ...
- }
修改完成后,重新加载Nginx配置:
- sudo nginx s reload
Q2:如何配置Nginx实现URL重写?
A2:要在Nginx中实现URL重写,可以使用rewrite
指令,以下是一个简单的重写示例,将所有以.php
结尾的请求重写为.phproute
:
- server {
- listen 80;
- server_name example.com;
- location / {
- rewrite ^(.*)\.php$ $1.phproute last;
- ...
- }
- }