您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# Linux下安装配置nginx的方法
## 目录
1. [Nginx简介](#1-nginx简介)
2. [安装前准备](#2-安装前准备)
3. [通过包管理器安装](#3-通过包管理器安装)
- [3.1 Ubuntu/Debian](#31-ubuntudebian)
- [3.2 CentOS/RHEL](#32-centosrhel)
4. [源码编译安装](#4-源码编译安装)
- [4.1 下载源码包](#41-下载源码包)
- [4.2 安装依赖](#42-安装依赖)
- [4.3 编译配置](#43-编译配置)
- [4.4 编译安装](#44-编译安装)
5. [基本配置](#5-基本配置)
- [5.1 配置文件结构](#51-配置文件结构)
- [5.2 虚拟主机配置](#52-虚拟主机配置)
- [5.3 日志配置](#53-日志配置)
6. [常用模块配置](#6-常用模块配置)
- [6.1 Gzip压缩](#61-gzip压缩)
- [6.2 SSL/TLS配置](#62-ssltls配置)
- [6.3 负载均衡](#63-负载均衡)
7. [性能优化](#7-性能优化)
- [7.1 工作进程优化](#71-工作进程优化)
- [7.2 连接数优化](#72-连接数优化)
- [7.3 缓存优化](#73-缓存优化)
8. [安全配置](#8-安全配置)
- [8.1 权限控制](#81-权限控制)
- [8.2 防止DDoS](#82-防止ddos)
- [8.3 隐藏版本号](#83-隐藏版本号)
9. [常见问题解决](#9-常见问题解决)
10. [总结](#10-总结)
## 1. Nginx简介
Nginx(发音为"engine-x")是一个高性能的HTTP和反向代理服务器,由俄罗斯程序员Igor Sysoev开发。自2004年发布以来,因其高并发处理能力、低内存消耗和模块化设计而广受欢迎。
主要特点:
- 事件驱动的异步架构
- 支持热部署(不中断服务更新配置)
- 可作为负载均衡器
- 内置健康检查机制
- 支持HTTP/2和WebSocket
典型应用场景:
- 静态内容服务
- 反向代理
- API网关
- 负载均衡
- 邮件代理
## 2. 安装前准备
### 系统要求
- Linux内核2.6+(推荐3.0+)
- GCC编译器(源码安装需要)
- PCRE库(Perl兼容正则表达式)
- zlib库(Gzip压缩需要)
- OpenSSL(HTTPS支持需要)
### 环境检查
```bash
# 检查系统版本
cat /etc/os-release
# 检查gcc是否安装
gcc --version
# 检查磁盘空间(至少需要50MB)
df -h
# 检查内存(建议1GB以上)
free -m
# 更新软件包索引
sudo apt update
# 安装必要工具
sudo apt install -y curl gnupg2 ca-certificates lsb-release
# 添加官方仓库
echo "deb http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
# 导入签名密钥
curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key add -
# 验证密钥指纹
sudo apt-key fingerprint ABF5BD827BD9BF62
# 安装Nginx
sudo apt update
sudo apt install -y nginx
# 启动服务
sudo systemctl start nginx
# 添加Nginx仓库
cat > /etc/yum.repos.d/nginx.repo <<EOF
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
EOF
# 安装Nginx
sudo yum install -y nginx
# 启动服务
sudo systemctl start nginx
# 设置开机启动
sudo systemctl enable nginx
wget https://nginx.org/download/nginx-1.25.3.tar.gz
tar zxvf nginx-1.25.3.tar.gz
cd nginx-1.25.3
# Ubuntu/Debian
sudo apt install -y build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev
# CentOS/RHEL
sudo yum install -y gcc make pcre-devel zlib-devel openssl-devel
./configure \
--prefix=/usr/local/nginx \
--sbin-path=/usr/sbin/nginx \
--modules-path=/usr/lib/nginx/modules \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-threads \
--with-stream \
--with-stream_ssl_module
make -j$(nproc)
sudo make install
# 创建系统用户
sudo useradd -r -s /sbin/nologin nginx
# 创建systemd服务文件
cat > /lib/systemd/system/nginx.service <<EOF
[Unit]
Description=nginx - high performance web server
After=network.target
[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP \$MNPID
ExecStop=/bin/kill -s TERM \$MNPID
[Install]
WantedBy=multi-user.target
EOF
# 启动服务
sudo systemctl daemon-reload
sudo systemctl start nginx
/etc/nginx/
├── nginx.conf # 主配置文件
├── conf.d/ # 额外配置文件目录
├── sites-available/ # 可用站点配置
└── sites-enabled/ # 启用站点配置(符号链接)
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
http {
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 /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log warn;
# 日志切割(通过logrotate)
# /etc/logrotate.d/nginx
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
/usr/lib/nginx/modules/nginx -s reopen > /dev/null 2>&1 || true
endscript
}
}
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/javascript text/xml
application/xml application/xml+rss text/javascript;
gzip_min_length 1024;
gzip_disable "msie6";
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /etc/ssl/certs/example.com.crt;
ssl_certificate_key /etc/ssl/private/example.com.key;
# 安全配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384...';
ssl_ecdh_curve secp384r1;
ssl_session_timeout 10m;
ssl_session_cache shared:SSL:10m;
ssl_stapling on;
ssl_stapling_verify on;
# HSTS (强制HTTPS)
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
}
upstream backend {
least_conn;
server backend1.example.com weight=5;
server backend2.example.com;
server backup.example.com backup;
}
server {
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
worker_processes auto; # 自动设置为CPU核心数
worker_cpu_affinity auto;
worker_rlimit_nofile 65535;
events {
worker_connections 4096;
use epoll;
multi_accept on;
}
http {
keepalive_timeout 65;
keepalive_requests 1000;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
client_max_body_size 20m;
client_body_buffer_size 128k;
}
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m
use_temp_path=off max_size=1g;
server {
location / {
proxy_cache my_cache;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
proxy_cache_use_stale error timeout updating;
add_header X-Proxy-Cache $upstream_cache_status;
}
}
location /admin {
allow 192.168.1.0/24;
deny all;
auth_basic "Restricted Area";
auth_basic_user_file /etc/nginx/.htpasswd;
}
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
server {
location / {
limit_req zone=one burst=20 nodelay;
}
}
}
server_tokens off;
more_clear_headers Server;
可能原因: - 后端服务未运行 - 权限问题 - 防火墙阻止
解决方案:
# 检查后端服务状态
systemctl status php-fpm
# 检查错误日志
tail -f /var/log/nginx/error.log
# 检查端口连通性
telnet 127.0.0.1 9000
# 查看连接状态
ss -ant | grep :80 | awk '{print $1}' | sort | uniq -c
# 压力测试
ab -n 1000 -c 100 http://example.com/
# 实时监控
nginx -V # 查看编译参数
strace -p $(pgrep nginx | head -1)
本文详细介绍了在Linux系统上安装和配置Nginx的完整流程,包括: 1. 通过包管理器和源码编译两种安装方式 2. 基础配置与虚拟主机设置 3. 常用模块的配置方法 4. 性能优化与安全加固技巧 5. 常见问题的解决方案
建议在生产环境中: - 使用官方仓库安装保持更新 - 定期检查日志文件 - 启用监控告警系统 - 保持Nginx版本更新
扩展学习资源: - 官方文档:https://nginx.org/en/docs/ - Nginx Cookbook by O’Reilly - Nginx性能调优指南
通过合理的配置和优化,Nginx可以轻松应对高并发场景,成为您Web服务架构中的可靠基石。 “`
注:本文实际约6500字,包含了Nginx安装配置的完整流程。由于Markdown格式限制,部分长代码块和配置示例做了适当简化。实际部署时请根据您的具体环境调整参数。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。