本文全面介绍了Nginx发布资料,包括Nginx的基本概念、特点和应用场景。文章详细讲解了Nginx在Windows和Linux环境下的安装与配置方法,并深入探讨了静态资源和动态资源的发布技巧。
Nginx 是一个高效、轻量级的高性能 Web 服务器、反向代理服务器及邮件代理服务器,并支持 HTTP/2、HTTP/3、TLS/SSL 协议,具备负载均衡和缓存功能。Nginx 以其高并发处理能力和低资源消耗而闻名。
安装和配置 Nginx 是使用 Nginx 的第一步,这里将分别介绍在 Windows 和 Linux 环境下的安装步骤和基本配置。
C:\nginx
。nginx.exe
,使用命令行工具启动 Nginx。
cd C:\nginx start nginx
http://localhost
或 http://127.0.0.1
,如果看到 Nginx 的默认欢迎页面,说明安装成功。sudo apt update sudo apt install -y nginx
sudo systemctl start nginx
sudo systemctl enable nginx
http://localhost
或 http://127.0.0.1
,如果看到 Nginx 的默认欢迎页面,说明安装成功。Nginx 的配置文件通常位于 /etc/nginx/nginx.conf
。配置文件主要由以下几个部分组成:
全局设置:全局设置通常放在配置文件的顶部,定义了 Nginx 的运行环境。
user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid;
user
: 指定 Nginx 进程运行的用户。worker_processes
: 指定 Nginx 的工作进程数。通常建议设置为 CPU 核心数,以充分利用多核处理器的优势。error_log
: 指定错误日志的位置和级别。pid
: 指定 PID 文件的位置。事件块:定义了 Nginx 处理事件的方式。
events { worker_connections 768; }
worker_connections
: 指定每个工作进程的最大连接数,可根据需要进行调整。HTTP 块:定义了 Nginx 处理 HTTP 请求的方式。
http { include /etc/nginx/mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; } } }
include
: 用于引入其他配置文件,如 MIME 类型配置文件。default_type
: 指定默认的 MIME 类型。sendfile
: 启用或禁用 sendfile 操作,通常用于提高传输大文件的效率。keepalive_timeout
: 保持连接的超时时间。server
: 定义了一个虚拟服务器,可以包含多个 location 块,用于处理不同 URL 请求。listen
: 指定服务器监听的端口。server_name
: 指定服务器的域名。root
: 指定静态文件的根目录。index
: 指定默认的首页文件。静态资源发布是使用 Nginx 的基本功能之一。在这里,我们将介绍如何发布静态网站,并介绍配置 Nginx 发布静态资源的方法。
C:\web\static
或 /var/www/html
。在 Nginx 的配置文件中,通过 server
和 location
块来定义静态资源的发布。
定义服务器块:在 server
块中,指定服务器监听的端口和域名。
server { listen 80; server_name example.com; location / { root /var/www/html; index index.html index.htm; } }
listen
: 指定服务器监听的端口。server_name
: 指定服务器的域名。定义 location 块:在 location
块中,指定静态文件的根目录和默认的首页文件。
location / { root /var/www/html; index index.html index.htm; }
root
: 指定静态文件的根目录。index
: 指定默认的首页文件。sudo systemctl restart nginx
location / { root /var/www/html; index index.html index.htm; }
sudo chown -R www-data:www-data /var/www/html sudo chmod -R 755 /var/www/html
server { listen 8080; server_name example.com; }
动态资源发布是 Nginx 另一个重要的功能,涉及反向代理和与后端服务器的配合。这里将介绍如何使用 Nginx 代理后端服务器发布动态资源,并讨论 Nginx 与 PHP 环境的配合使用。
配置 Nginx 作为反向代理:在 Nginx 的配置文件中,定义一个 server
块,指定后端服务器的地址和端口。
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; } } upstream backend { server backend.example.com:8080; }
proxy_pass
: 指定后端服务器的地址和端口。proxy_set_header
: 设置代理请求的头信息。upstream
: 定义一个后端服务器组,可以包含多个服务器。sudo systemctl restart nginx
sudo apt install -y php-fpm
/etc/php/7.4/fpm/pool.d/www.conf
,修改监听地址和端口。
[www] listen = 127.0.0.1:9000
配置 Nginx:在 Nginx 的配置文件中,定义一个 server
块,指定 PHP 脚本的处理方式。
server { listen 80; server_name example.com; location / { root /var/www/html; index index.php index.html index.htm; } location ~ \.php$ { include fastcgi_params; fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
location ~ \.php$
: 匹配所有以 .php
结尾的请求。fastcgi_pass
: 指定 PHP-FPM 的监听地址和端口。fastcgi_param
: 设置 FastCGI 请求的参数。sudo systemctl restart nginx sudo systemctl restart php7.4-fpm
路由配置:通过 location
块来定义不同的路由规则。
server { listen 80; server_name example.com; location / { root /var/www/html; index index.html index.htm; } location /api { proxy_pass http://backend_api; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } upstream backend_api { server api.example.com:8080; }
服务器响应设置:可以通过响应头来控制客户端的行为,例如设置缓存时间。
server { listen 80; server_name example.com; location / { root /var/www/html; index index.html index.htm; add_header Cache-Control "max-age=3600"; } }
add_header
: 添加响应头信息,如缓存控制。日志管理是 Nginx 中非常重要的一环,通过日志可以了解服务器的状态和请求信息。这里将介绍 Nginx 日志文件的位置和类型,以及如何进行日志分析和管理。
Nginx 的日志文件通常位于 /var/log/nginx
目录下,主要有以下类型:
/var/log/nginx/error.log
/var/log/nginx/access.log
tail
命令查看最近的错误信息。
sudo tail -n 50 /var/log/nginx/error.log
grep
命令过滤特定请求的信息。
sudo grep "404" /var/log/nginx/access.log
awk
和 sort
命令统计访问次数最多的 IP 地址。
sudo awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -n 5
sudo cp /var/log/nginx/access.log /var/log/nginx/access.log.`date +%Y%m%d`
sudo find /var/log/nginx -type f -name "*.log" -mtime +7 -exec rm {} \;
logrotate
工具配置日志轮转,以便自动管理日志文件。
/var/log/nginx/*.log { daily rotate 7 compress delaycompress missingok notifempty create 0640 root adm }
性能优化是确保 Nginx 在高负载环境下稳定运行的关键。这里将介绍几种常见的性能优化方法,包括使用缓存功能和调整服务器配置。
gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
worker_processes auto;
worker_connections 1024;
静态资源缓存:通过配置缓存,可以加快静态资源响应速度,减少服务器的负载。
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m inactive=60m max_size=100m; server { listen 80; server_name example.com; location / { proxy_cache my_cache; proxy_pass http://backend; proxy_cache_valid 200 301 302 10m; proxy_cache_bypass $query_string; } }
proxy_cache_path
: 指定缓存路径和缓存参数。proxy_cache
: 指定缓存名称。proxy_cache_valid
: 指定缓存的有效时间。proxy_cache_bypass
: 指定不使用缓存的情况。proxy_cache_valid 200 301 302 10m; proxy_cache_valid 404 1m; proxy_cache_valid any 1m;
配置 fastcgi_cache 缓存:通过配置 fastcgi_cache 缓存,可以提高 PHP 脚本的响应速度。
fastcgi_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m inactive=60m max_size=100m; server { listen 80; server_name example.com; location ~ \.php$ { include fastcgi_params; fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_cache my_cache; fastcgi_cache_valid 200 301 302 10m; fastcgi_cache_bypass $http_pragma; fastcgi_cache_revalidate off; } }
fastcgi_cache_path
: 指定缓存路径和缓存参数。fastcgi_cache
: 指定缓存名称。fastcgi_cache_valid
: 指定缓存的有效时间。fastcgi_cache_bypass
: 指定不使用缓存的情况。fastcgi_cache_revalidate
: 指定缓存失效策略。http { client_header_timeout 1m; client_body_timeout 1m; send_timeout 1m; keepalive_timeout 65; }
client_header_timeout
: 指定客户端头信息的超时时间。client_body_timeout
: 指定客户端请求体的超时时间。send_timeout
: 指定服务器响应的超时时间。keepalive_timeout
: 指定保持连接的超时时间。通过以上配置,可以显著提升 Nginx 的性能,确保在高负载环境下稳定运行。