悠悠楠杉
Nginx在Linux系统中的安装与配置实战指南
Nginx在Linux系统中的安装与配置实战指南
关键词:Nginx安装、Linux配置、Web服务器、反向代理、负载均衡
描述:本文详细讲解在Linux系统下从源码编译到系统服务配置Nginx的全流程,包含常见配置模板与性能调优建议,适合运维人员和开发者阅读。
一、为什么选择Nginx?
在Apache与Nginx的长期竞争中,Nginx凭借其事件驱动架构和低资源消耗逐渐成为Web服务器的主流选择。根据Netcraft最新统计,全球Top 100万网站中已有超过40%采用Nginx,特别是在高并发场景下,Nginx的内存占用仅为Apache的1/5。
二、安装前的准备工作
1. 环境检查
bash
查看系统版本
lsb_release -a
检查现有Web服务
sudo netstat -tulnp | grep ':80'
建议关闭SELinux以避免权限问题:
bash
sudo setenforce 0
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
2. 依赖安装
不同Linux发行版需要安装的开发工具:
- Ubuntu/Debian:
bash
sudo apt install build-essential libpcre3 libpcre3-dev zlib1g-dev libssl-dev
- CentOS/RHEL:
bash
sudo yum install gcc make pcre-devel zlib-devel openssl-devel
三、两种安装方式详解
方案A:源码编译安装(推荐生产环境)
bash
wget https://nginx.org/download/nginx-1.25.3.tar.gz
tar zxvf nginx-1.25.3.tar.gz
cd nginx-1.25.3
./configure \
--prefix=/usr/local/nginx \
--with-httpsslmodule \
--with-httpv2module \
--with-httprealipmodule
make && sudo make install
编译参数说明:
- --with-stream
支持TCP/UDP代理
- --with-threads
启用线程池
- --with-debug
调试模式(仅开发使用)
方案B:包管理器安装(适合快速部署)
bash
Ubuntu
sudo apt install nginx
CentOS
sudo yum install epel-release
sudo yum install nginx
四、核心配置实战
1. 服务管理
创建systemd服务文件/etc/systemd/system/nginx.service
:ini
[Unit]
Description=nginx - high performance web server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PIDFile=/usr/local/nginx/logs/nginx.pid
[Install]
WantedBy=multi-user.target
启用服务:
bash
sudo systemctl daemon-reload
sudo systemctl enable --now nginx
2. 基础配置优化
修改nginx.conf
关键参数:
nginx
worker_processes auto; # 自动匹配CPU核心数
worker_connections 1024; # 每个worker连接数
keepalive_timeout 65;
gzip on; # 启用压缩
3. 虚拟主机配置
创建/usr/local/nginx/conf/conf.d/mysite.conf
:nginx
server {
listen 80;
server_name example.com;
location / {
root /var/www/html;
index index.html;
try_files $uri $uri/ =404;
}
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
}
五、安全加固措施
隐藏Nginx版本号:
nginx server_tokens off;
限制敏感方法:
nginx if ($request_method !~ ^(GET|HEAD|POST)$ ) { return 405; }
配置WAF:
bash sudo git clone https://github.com/nbs-system/naxsi.git ./configure --add-module=../naxsi/naxsi_src
六、性能调优技巧
启用缓存:
nginx proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=mycache:10m inactive=60m;
开启Brotli压缩:
bash ./configure --with-http_brotli_module
内核参数优化:
bash echo 'net.core.somaxconn = 65535' >> /etc/sysctl.conf sysctl -p
七、常见问题排查
端口占用:
bash sudo lsof -i :80
配置文件测试:
bash sudo nginx -t
日志分析:
bash tail -f /var/log/nginx/error.log