当前位置: 首页 > article >正文

Nginx 使用指南

​🌈个人主页:前端青山
🔥系列专栏:Nginx篇
🔖人终将被年少不可得之物困其一生

依旧青山,本期给大家带来Nginx篇专栏内容:Nginx-使用指南

前言

大家好,我是青山。Nginx 是一个高性能的 HTTP 和反向代理服务器,广泛应用于各种 Web 应用和服务中。本文将详细介绍 Nginx 的安装、启动、配置、常用命令、高级功能以及常见问题解决方法,帮助你更好地理解和使用 Nginx。

目录

前言

1. 安装 Nginx

1.1 在 Ubuntu 上安装

1.2 在 CentOS 上安装

1.3 在 Debian 上安装

1.4 在 macOS 上安装

2. 启动、停止和重启 Nginx

2.1 启动 Nginx

2.2 停止 Nginx

2.3 重启 Nginx

2.4 重新加载配置文件

2.5 检查 Nginx 状态

3. 配置 Nginx

3.1 配置文件位置

3.2 主配置文件结构

3.3 虚拟主机配置示例

3.4 解释

4. 常用命令

4.1 检查配置文件语法

4.2 查看 Nginx 版本

4.3 查看 Nginx 进程

4.4 查看 Nginx 日志

4.5 查看 Nginx 配置文件路径

4.6 查看 Nginx 当前运行状态

5. 高级功能

5.1 开启 Gzip 压缩

5.2 设置缓存

5.3 配置 SSL

5.4 配置负载均衡

5.5 配置反向代理

5.6 配置限流

5.7 配置访问控制

5.8 配置重定向

5.9 配置缓存清理

5.10 配置日志格式

6. 常见问题及解决方法

6.1 Nginx 无法启动

6.2 Nginx 无法绑定端口

6.3 Nginx 无法访问静态文件

6.4 Nginx 代理请求失败

6.5 Nginx 日志文件过大

6.6 Nginx 无法解析域名

6.7 Nginx 无法处理大文件上传

6.8 Nginx 无法处理 HTTPS 请求

6.9 Nginx 无法处理 WebSocket 请求

6.10 Nginx 无法处理高并发请求

总结

1. 安装 Nginx

1.1 在 Ubuntu 上安装

sudo apt update sudo apt install nginx

1.2 在 CentOS 上安装

sudo yum install epel-release sudo yum install nginx

1.3 在 Debian 上安装

sudo apt update sudo apt install nginx

1.4 在 macOS 上安装

使用 Homebrew 安装 Nginx:

brew install nginx

2. 启动、停止和重启 Nginx

2.1 启动 Nginx

sudo systemctl start nginx

2.2 停止 Nginx

sudo systemctl reload nginx
sudo systemctl stop nginx

2.3 重启 Nginx

sudo systemctl restart nginx

2.4 重新加载配置文件

2.5 检查 Nginx 状态

sudo systemctl status nginx

3. 配置 Nginx

3.1 配置文件位置

Nginx 的主配置文件通常位于 /etc/nginx/nginx.conf。每个虚拟主机的配置文件通常位于 /etc/nginx/sites-available/ 目录下,并通过符号链接链接到 /etc/nginx/sites-enabled/ 目录。

3.2 主配置文件结构

user www-data; worker_processes auto; pid /run/nginx.pid; include /etc/nginx/modules-enabled/*.conf; events { worker_connections 768; } 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; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE ssl_prefer_server_ciphers on; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; gzip on; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; }

3.3 虚拟主机配置示例

以下是一个简单的 Nginx 虚拟主机配置示例:

server { listen 80; server_name example.com; root /var/www/example.com; index index.html index.htm; location / { try_files $uri $uri/ =404; } location /api/ { 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; } }

3.4 解释

  • listen 80;:监听 80 端口。
  • server_name example.com;:指定服务器名称。
  • root /var/www/example.com;:指定网站根目录。
  • index index.html index.htm;:指定默认索引文件。
  • location / { ... }:处理根路径的请求。
  • location /api/ { ... }:处理 /api/ 路径的请求,并将其代理到本地的 3000 端口。

4. 常用命令

4.1 检查配置文件语法

sudo nginx -t

4.2 查看 Nginx 版本

nginx -v

4.3 查看 Nginx 进程

ps aux | grep nginx

4.4 查看 Nginx 日志

Nginx 的访问日志和错误日志通常位于 /var/log/nginx/ 目录下。

  • 访问日志:/var/log/nginx/access.log
  • 错误日志:/var/log/nginx/error.log

4.5 查看 Nginx 配置文件路径

nginx -T

4.6 查看 Nginx 当前运行状态

sudo systemctl status nginx

5. 高级功能

5.1 开启 Gzip 压缩

在 http 或 server 块中添加以下配置:

gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

5.2 设置缓存

在 location 块中添加以下配置:

location /static/ { alias /var/www/example.com/static/; expires 30d; }

5.3 配置 SSL

安装 Let's Encrypt 并配置 SSL:

sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d example.com

5.4 配置负载均衡

Nginx 可以用于负载均衡,以下是一个简单的负载均衡配置示例:

upstream backend { server backend1.example.com; server backend2.example.com; server backend3.example.com; } server { listen 80; server_name example.com; location / { proxy_pass http://backend; } }

5.5 配置反向代理

Nginx 可以作为反向代理服务器,以下是一个简单的反向代理配置示例:

server { listen 80; server_name example.com; 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; proxy_set_header X-Forwarded-Proto $scheme; } }

5.6 配置限流

Nginx 可以限制客户端的请求速率,以下是一个简单的限流配置示例:

http { limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; server { listen 80; server_name example.com; location / { limit_req zone=one burst=5 nodelay; proxy_pass http://backend; } } }

5.7 配置访问控制

Nginx 可以限制特定 IP 地址的访问,以下是一个简单的访问控制配置示例:

server { listen 80; server_name example.com; allow 192.168.1.0/24; deny all; location / { proxy_pass http://backend; } }

5.8 配置重定向

Nginx 可以进行 URL 重定向,以下是一个简单的重定向配置示例:

server { listen 80; server_name old.example.com; return 301 http://new.example.com$request_uri; }

5.9 配置缓存清理

Nginx 可以配置缓存清理,以下是一个简单的缓存清理配置示例:

http { proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m; proxy_cache_key "$scheme$request_method$host$request_uri"; server { listen 80; server_name example.com; location / { proxy_pass http://backend; proxy_cache my_cache; proxy_cache_bypass $http_purge; proxy_cache_valid 200 301 302 10m; proxy_cache_valid 404 1m; add_header X-Proxy-Cache $upstream_cache_status; } location ~ /purge(/.*) { allow 192.168.1.0/24; deny all; proxy_cache_purge my_cache "$scheme$request_method$host$1"; } } }

5.10 配置日志格式

Nginx 可以自定义日志格式,以下是一个简单的日志格式配置示例:

http { log_format custom '$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 custom; server { listen 80; server_name example.com; location / { proxy_pass http://backend; } } }

6. 常见问题及解决方法

6.1 Nginx 无法启动

检查 Nginx 配置文件是否有语法错误:

sudo nginx -t

6.2 Nginx 无法绑定端口

确保没有其他服务占用该端口:

sudo netstat -tuln | grep 80

6.3 Nginx 无法访问静态文件

检查文件权限和路径是否正确:

ls -l /var/www/example.com

6.4 Nginx 代理请求失败

检查后端服务是否正常运行:

curl http://localhost:3000

6.5 Nginx 日志文件过大

定期清理日志文件:

sudo truncate -s 0 /var/log/nginx/access.log sudo truncate -s 0 /var/log/nginx/error.log

6.6 Nginx 无法解析域名

检查 DNS 配置:

nslookup example.com

6.7 Nginx 无法处理大文件上传

调整 Nginx 配置以支持大文件上传:

http { client_max_body_size 100M; }

6.8 Nginx 无法处理 HTTPS 请求

确保 SSL 证书和密钥文件路径正确:

server { listen 443 ssl; server_name example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; }

6.9 Nginx 无法处理 WebSocket 请求

配置 Nginx 以支持 WebSocket:

location /ws/ { proxy_pass http://backend; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; }

6.10 Nginx 无法处理高并发请求

调整 Nginx 工作进程数和连接数:

worker_processes auto; events { worker_connections 1024; }

总结

Nginx 是一个功能强大的 Web 服务器和反向代理服务器,适用于多种应用场景。通过本文的详细介绍,希望你能对 Nginx 的安装、配置、常用命令、高级功能以及常见问题解决方法有一个全面的了解。如果你有任何问题或建议,欢迎留言交流。祝你在使用 Nginx 的过程中一切顺利!

---青山


http://www.kler.cn/a/378972.html

相关文章:

  • 嵌入式开发之文件I/O
  • 《JVM第4课》程序计数器
  • ArcGIS005:ArcMap常用操作101-150例动图演示
  • 测长机在测量长度尺寸方面有哪些优势?如何保证测量的准确性?
  • 利用EasyExcel实现简易Excel导出
  • 【LwIP源码学习4】主线程tcpip_thread
  • CentOS 7 软件/程序安装示例
  • 下载pytorch报错:没有发现某个版本
  • PostgreSQL11 | PostgreSQL用户管理(上篇)
  • 构建工具-webpack和vite笔记
  • 无桥图腾柱PFC原理及MATLAB仿真
  • M3U8直播,视频切片 AES加密,多码流自适应
  • npm run dev 报错PS ‘vite‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。
  • 中国平安蝉联福布斯“2024全球最佳雇主“,位居中国金融业第二
  • stm32cubeIde 使用笔记
  • php内置服务停止shell小工具,用来停止指定的端口的php内置服务进程
  • 2、课程大纲、学习方法
  • 【MySQL】 运维篇—备份与恢复:使用MySQL Replication进行数据冗余与高可用性
  • Solana链上的Pump狙击机器人与跟单机器人的工作原理及盈利模式
  • 校园网连接上却无法访问解决方案
  • 力扣题目解析--整数反转
  • Docker部署SQLServer教程(配置持久化)
  • PCD可视化(C++)
  • 一个git相关的cve:CVE-2024-32002
  • Android Studio插件版本与Gradle 版本对应关系
  • sql注入——靶场Less1