在Linux系统上配置Nginx,不仅可以提升Web服务器的性能,还能通过反向代理、负载均衡等功能增强网站的可用性和安全性
本文将详细介绍如何在Linux系统上安装、配置Nginx,并附带一些高级配置示例
一、安装Nginx 1. 下载Nginx安装包 首先,前往Nginx官网下载所需版本的安装包
Nginx的官方网站提供了各个版本的下载链接,可以根据需要选择最新版本或稳定版本
如果Linux系统联网,可以直接使用wget命令下载
wget http://nginx.org/download/nginx-1.24.0.tar.gz 如果系统中没有安装wget,需要先进行安装,例如在CentOS系统上可以使用以下命令: yum install -y wget 2. 安装Nginx相关依赖 在编译安装Nginx之前,需要安装一些必要的依赖包
这些依赖包包括gcc-c++、zlib、zlib-devel、openssl、openssl-devel和pcre、pcre-devel等
在线环境下,可以直接使用yum命令进行安装: yum install -y gcc-c++ zlib zlib-devel openssl openssl-devel pcre pcre-devel 如果是离线环境,则需要下载这些依赖包的安装包,然后解压并安装
3. 编译安装Nginx 下载并安装完依赖包后,可以开始编译安装Nginx
首先解压下载的Nginx安装包: tar -zxvf nginx-1.24.0.tar.gz 然后进入解压后的目录,执行配置脚本: cd nginx-1.24.0 ./configure --prefix=/usr/local/nginx 如果配置脚本报错提示缺少C编译器,可以安装gcc和gcc-c++: yum -y install gcc gcc-c++ autoconf automake make 配置成功后,使用make命令进行编译和安装: make && make install 编译安装完成后,Nginx会自动创建必要的文件和目录,包括配置文件、日志文件等,默认位于/usr/local/nginx目录下
二、启动与停止Nginx 1. 启动Nginx 进入Nginx的安装目录,执行启动脚本: cd /usr/local/nginx/sbin ./nginx -c /usr/local/nginx/conf/nginx.conf 也可以直接使用绝对路径启动Nginx: /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 启动后,可以使用以下命令检查Nginx是否成功启动: ps -ef | grep nginx 如果Nginx成功启动,可以通过浏览器访问服务器的IP地址或域名(默认端口为80)来验证Nginx是否正常工作
2. 停止Nginx 停止Nginx的命令如下: /usr/local/nginx/sbin/nginx -s stop 也可以使用系统服务命令停止Nginx(如果已将Nginx配置为系统服务): systemctl stop nginx 3. 重新加载配置 修改Nginx配置文件后,需要重新加载配置使其生效
可以使用以下命令重新加载配置: /usr/local/nginx/sbin/nginx -s reload 或者使用系统服务命令重新加载配置: systemctl reload nginx 三、配置Nginx Nginx的配置文件通常位于/usr/local/nginx/conf/nginx.conf(源码编译安装)或/etc/nginx/nginx.conf(包管理器安装)
Nginx的配置文件采用模块化设计,包含多个上下文(context),每个上下文定义了一组相关的配置指令
1. 全局块 全局块是Nginx配置文件的开始部分,主要设置一些影响Nginx服务器整体运行的配置指令,包括配置运行Nginx服务器的用户(组)、允许生成的worker process数、进程PID存放路径、日志存放路径和类型以及配置文件的引入等
user nginx; worker_processes auto; error_log /var/log/nginx/error.log warn; pid /run/nginx.pid; 2. events块 events块定义事件模块的配置,影响Nginx的并发处理能力
主要配置指令包括worker_connections(指定每个工作进程的最大并发连接数)和use(指定事件模型,通常使用默认值即可)
events { worker_connections 1024; use epoll; } 3. http块 http块定义HTTP模块的配置,包含全局HTTP配置和虚拟主机配置
主要配置指令包括include(包含其他配置文件)、default_type(指定默认的MIME类型)、sendfile(启用sendfile系统调用,提高静态文件传输效率)、keepalive_timeout(指定长连接的超时时间)和gzip(启用Gzip压缩,减少传输数据量)等
http { include /etc/nginx/mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; gzip on; include /etc/nginx/conf.d/.conf; include /etc/nginx/sites-enabled/; } 4. server块 server块定义虚拟主机的配置,每个虚拟主机可以独立配置不同的域名、端口和目录
主要配置指令包括listen(指定监听的端口和IP地址)、server_name(指定虚拟主机的主机名)、root(指定虚拟主机的根目录)、index(指定默认的索引文件)和error_page(指定错误页面的路径)等
server { listen 80; server_name example.com www.example.com; root /var/www/example.com; index index.html index.htm; error_page 404 /404.html; location/ { root /var/www/example.com; index index.html index.htm; } location /static/ { alias /var/www