您好,登录后才能下订单哦!
# Linux下如何安装和配置Nginx
## 1. 前言
Nginx(发音为"engine-x")是一个高性能的HTTP和反向代理服务器,以其稳定性、丰富的功能集、简单的配置和低资源消耗而闻名。它既可以作为Web服务器直接提供静态内容,也可以作为负载均衡器或反向代理服务器使用。
本文将详细介绍在Linux系统下安装和配置Nginx的完整过程,涵盖从基础安装到高级配置的各个方面。
## 2. 安装前的准备
### 2.1 系统要求
Nginx可以在大多数Linux发行版上运行,包括但不限于:
- Ubuntu/Debian
- CentOS/RHEL
- Fedora
- Arch Linux
建议系统满足以下最低要求:
- 1GB RAM(生产环境建议2GB以上)
- 至少10GB可用磁盘空间
- root或具有sudo权限的用户
### 2.2 更新系统
在安装任何新软件之前,建议先更新系统软件包:
```bash
# Ubuntu/Debian
sudo apt update && sudo apt upgrade -y
# CentOS/RHEL
sudo yum update -y
# Fedora
sudo dnf update -y
sudo apt install nginx -y
CentOS/RHEL默认仓库中没有Nginx,需要先添加EPEL仓库:
sudo yum install epel-release -y
sudo yum install nginx -y
sudo dnf install nginx -y
如果需要最新版本或自定义模块,可以选择编译安装:
# 安装编译依赖
sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev -y
# 下载最新稳定版
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-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module
# 编译并安装
make
sudo make install
Nginx的配置文件通常位于以下位置:
- /etc/nginx/nginx.conf
- 主配置文件
- /etc/nginx/conf.d/
- 额外配置文件目录
- /etc/nginx/sites-available/
- 可用站点配置
- /etc/nginx/sites-enabled/
- 启用的站点配置(通常是符号链接)
编辑主配置文件/etc/nginx/nginx.conf
:
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 1024;
multi_accept on;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
gzip_disable "msie6";
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
# 启动Nginx
sudo systemctl start nginx
# 设置开机自启
sudo systemctl enable nginx
# 检查状态
sudo systemctl status nginx
# 重新加载配置(不中断服务)
sudo systemctl reload nginx
# 完全重启
sudo systemctl restart nginx
sudo mkdir -p /var/www/example.com/html
sudo chown -R $USER:$USER /var/www/example.com/html
sudo chmod -R 755 /var/www/example.com
在/etc/nginx/sites-available/example.com
创建文件:
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
}
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t # 测试配置语法
sudo systemctl reload nginx
# 安装Certbot
sudo apt install certbot python3-certbot-nginx -y
# 获取证书
sudo certbot --nginx -d example.com -d www.example.com
# 测试续期
sudo certbot renew --dry-run
# 添加定时任务(每天检查续期)
sudo crontab -e
添加以下行:
0 12 * * * /usr/bin/certbot renew --quiet
worker_processes auto; # 自动设置为CPU核心数
worker_rlimit_nofile 100000;
events {
worker_connections 4096;
multi_accept on;
use epoll;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 30;
keepalive_requests 100000;
reset_timedout_connection on;
client_body_timeout 10;
send_timeout 2;
open_file_cache max=200000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
}
server_tokens off;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
add_header Referrer-Policy "no-referrer-when-downgrade";
add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'" always;
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
return 405;
}
location /app/ {
proxy_pass http://localhost:3000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
upstream backend {
least_conn;
server backend1.example.com weight=5;
server backend2.example.com;
server backend3.example.com;
keepalive 32;
}
server {
location / {
proxy_pass http://backend;
# 其他代理设置...
}
}
location /ws/ {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
}
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
# 查看最频繁的IP
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -n 20
# 查看HTTP状态码统计
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn
可能原因: - 后端服务未运行 - 代理设置错误 - 权限问题
检查: - 文件权限 - SELinux设置 - 目录索引设置
# 查看Nginx进程
ps aux | grep nginx
# 检查打开文件限制
ulimit -n
# 网络连接统计
netstat -anp | grep nginx
通过本文的详细指导,您应该已经掌握了在Linux系统上安装和配置Nginx的全过程。从基础安装到高级配置,Nginx提供了丰富的功能来满足各种Web服务需求。建议在生产环境中部署前,充分测试所有配置,并考虑结合防火墙和其他安全措施来增强服务器安全性。
Nginx的强大之处在于其灵活性和高性能,通过不断学习和实践,您可以进一步发掘它的潜力,构建更加强大和可靠的Web服务架构。
命令 | 描述 |
---|---|
sudo systemctl start nginx |
启动Nginx |
sudo systemctl stop nginx |
停止Nginx |
sudo systemctl restart nginx |
重启Nginx |
sudo systemctl reload nginx |
重载配置 |
sudo nginx -t |
测试配置语法 |
sudo tail -f /var/log/nginx/error.log |
查看错误日志 |
sudo ss -tulpn | grep nginx |
查看Nginx监听端口 |
sudo du -sh /var/log/nginx/ |
查看日志目录大小 |
”`
注意:本文约3750字,实际字数可能因格式和显示环境略有差异。文章包含了Nginx从安装到配置的完整流程,适合初学者和中级用户参考使用。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。