一、选择合适的服务器硬件
要想让NGINX能够发挥出更好的性能表现,我们需要首先确保我们所使用的服务器硬件能够满足性能的需求。比如,选择性能更好的处理器、更快的内存、更快的存储介质等等。这些因素会直接影响NGINX的性能表现。
二、调整NGINX的worker进程数
NGINX中的worker进程数需要根据实际情况进行调整。通常我们可以通过以下方式进行优化:
# 修改nginx.conf文件 worker_processes 8; # 改为服务器CPU核心数 worker_connections 1024;
worker_processes表示worker进程的数目,可以根据服务器CPU核心数进行设置,一般情况下,最好不要超过8个。而worker_connections则表示每个worker进程会开放的最多连接数,一般情况下设置为1024即可。
三、使用缓存来优化访问速度
我们可以使用缓存来优化NGINX的访问速度,减轻后台服务器的负担。我们可以使用代理缓存和FastCGI缓存两种方式:
1. 代理缓存
代理缓存使用起来非常简单,只需要在NGINX的配置文件中添加以下内容:
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m; proxy_cache_key "$scheme$request_method$host$request_uri"; proxy_cache_valid 200 302 5m; proxy_cache_valid 404 1m;
以上配置将缓存存放在/var/cache/nginx目录下,并且缓存大小不超过10MB。缓存时间设置为5分钟(对于状态码200和302的响应),对于404响应,缓存时间设置为1分钟。
2. FastCGI缓存
FastCGI缓存是一种加速PHP应用的方式。和代理缓存相比,FastCGI缓存还可以缓存非缓存able响应(比如重定向、404错误等)。需要在下面两个文件中添加以下的内容:
# 在nginx.conf文件中添加以下内容 fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=php_cache:10m inactive=60m; fastcgi_cache_key "$scheme$request_method$host$request_uri"; # 在server配置文件中添加以下内容 location ~ \.php$ { fastcgi_pass localhost:9000; fastcgi_param SCRIPT_FILENAME /var/www/scripts$fastcgi_script_name; fastcgi_index index.php; include fastcgi_params; fastcgi_cache_valid 200 60m; fastcgi_cache_bypass $skip_cache; fastcgi_no_cache $skip_cache; fastcgi_cache php_cache; }
以上配置将缓存存放在/var/cache/nginx目录下,并且缓存大小不超过10MB。缓存时间设置为60分钟。
四、启用HTTP2来提升访问速度
HTTP2是NGINX 1.9.5及以上版本的特性,它采用了多路复用,减少了延迟,提升了网站性能。我们可以通过以下方式启用HTTP2:
# 修改nginx.conf文件 http { server { listen 443 ssl http2; ... } }
以上配置中的http2参数即为http2的启用方式。这个参数只对使用HTTPS协议的网站有效。启用http2之后,可以在浏览器中检查HTTP版本是否为2.0。
五、使用gzip压缩来减小网络传输的数据量
为了缩短网页的加载时间,并节省带宽,通常情况下我们可以使用gzip压缩。我们可以在配置文件中加入如下配置来启用gzip压缩:
gzip on; gzip_disable "msie6"; gzip_vary on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
以上配置中,gzip-types选项中定义了可以进行gzip压缩的文件类型。选择正确的文件类型进行gzip压缩可以有效减少网络传输的数据量。
六、使用异步方式处理请求
异步方式可以使NGINX更高效地处理并发请求。NGINX可以使用epoll、kqueue、eventport等多种事件驱动机制来高效处理请求。
# 修改nginx.conf文件,启用epoll events { worker_connections 1024; use_epoll max; }
七、使用缓存来减轻数据库负担
为了减轻数据库的负担,我们可以使用缓存来缓存常用的查询结果。查询缓存可以使用Memcached、Redis等缓存工具。
# 在server配置文件中添加以下内容 location / { proxy_pass http://backend; proxy_cache my_cache; proxy_cache_bypass $http_pragma; proxy_cache_revalidate on; expires 5m; }
以上配置中,proxy-cache指令用于开启缓存功能,expires指令缓存时间设置为5分钟。