更改 Nginx 运行进程数
在高并发场景, 需要启动更多的 Nginx 进程以保证快速响应, 以处理用户的请求, 避免造成阻塞
可以使用 ps aux 命令查看 Nginx 运行进程的个数
更改进程数的配置方法
修改配置文件, 修改进程配置参数
修改配置文件的 worker_ processes 参数
一般设为 CPU 的个数或者核数
在高并发情况下可设置为 CPU 个数或者核数的 2 倍
运行进程数多 - 些, 响应访问请求时, Nginx 就不会临时启动新的进程提供服务, 减少了系统的开销, 提升了服务速度
使用 ps aux 查看运行进程数的变化情况
默认情况, Nginx 的多个进程可能跑在一个 CPU 上, 可以分配不同的进程给不同的 CPU 处理, 充分利用硬件多核多 CPU
在一台 4 核物理服务器, 可进行以下配置, 将进程进行分配
Worker_ cpu_affinity 0001 0010 0100 1000
配置实例
- [[email protected] conf]# ps aux | grep nginx // 查看进程数
- root 5278 0.0 0.0 20548 612 ? Ss 15:17 0:00 nginx: master process /usr/local/nginx/sbin/nginx
- nginx 5279 0.0 0.0 23076 1396 ? S 15:17 0:00 nginx: worker process
- root 5295 0.0 0.0 112728 972 pts/0 S+ 15:18 0:00 grep --color=auto nginx
- [[email protected] ~]# cd /proc/ // 进入设备目录
- [[email protected] proc]# cat cpuinfo // 查看 CPU 信息
- processor : 0
- vendor_id : GenuineIntel
- CPU family : 6
- ...// 省略部分内容... // 第一个 CPU 信息
- clflush size : 64
- cache_alignment : 64
- address sizes : 43 bits physical, 48 bits virtual
- power management:
- processor : 1
- vendor_id : GenuineIntel
- CPU family : 6
- ...// 省略部分内容...
- clflush size : 64 // 第二个 CPU 信息
- cache_alignment : 64
- address sizes : 43 bits physical, 48 bits virtual
- power management:
- [[email protected] proc]# VIM /usr/local/nginx/conf/nginx.conf // 进入编辑 nginx 配置文件
- #user nobody;
- worker_processes 2; // 增加 CPU 个数
- worker_cpu_affinity 01 10; // 设置平均分配访问请求
- #error_log logs/error.log;
- #error_log logs/error.log notice;
- #error_log logs/error.log info;
- #pid logs/nginx.pid;
- events {
- worker_connections 1024;
- }
- ...// 省略部分内容...
- :wq
- [[email protected] proc]# systemctl restart nginx.service // 重启服务
- [[email protected] proc]# ps aux | grep nginx // 查看进程数
- root 1813 0.0 0.0 20548 616 ? Ss 15:32 0:00 nginx: master process /usr/local/nginx/sbin/nginx
- nginx 1814 0.0 0.0 23076 1400 ? S 15:32 0:00 nginx: worker process
- nginx 1815 0.0 0.0 23076 1400 ? S 15:32 0:00 nginx: worker process
- // 增加进程数
- root 1823 0.0 0.0 112728 972 pts/0 S+ 15:32 0:00 grep --color=auto nginx
配置 Nginx 实现网页压缩功能
Nginx 的
ngx_http_gzip_module
压缩模块提供对文件内容压缩的功能
允许 Nginx 服务器将输出内容在发送客户端之前进行压缩, 以节约网站带宽, 提升用户的访问体验, 默认已经安装
可在配置文件中加入相应的压缩功能参数对压缩性能进行优化
压缩功能参数讲解
gzip on: 开启 gzip 压缩输出
gzip_min_length 1k: 用于设置允许压缩的页面最小字节数
gzip_buffers 4 16k: 表示申请
4
个单位为 16k 的内存作为压缩结果流缓存, 默认值是申请与原始数据大小相同的内存空间来存储 gzip 压缩结果
zip_http_version 1.0
: 用于设置识别 http 协议版本, 默认是 1.1, 目前大部分浏览器已经支持 gzip 解压, 但处理最慢, 也比较消耗服务器 CPU 资源
gzip_comp_level 2: 用来指定 gzip 压缩比, 1 压缩比最小, 处理速度最快;
9
压缩比最大, 传输速度快, 但处理速度最慢, 使用默认即可
gzip_types text/plain
: 压缩类型, 是就对哪些网页文档启用压缩功能
gzip_vary on: 选项可以让前端的缓存服务器缓存经过 gzip 压缩的页面
将以上的压缩功能参数加入到主配置文件 httpd 配置中段
配置实例
- [[email protected] proc]# cd /usr/local/nginx/conf/ // 进入配置文件目录
- [[email protected] conf]# VIM nginx.conf // 编辑配置文件
- ...// 省略部分内容...
- #keepalive_timeout 0;
- keepalive_timeout 65 180;
- client_header_timeout 80;
- client_body_timeout 80;
- gzip on; // 开启压缩功能
- gzip_min_length 1k; // 编辑压缩功能条目
- gzip_buffers 4 16k;
- gzip_http_version 1.1;
- gzip_comp_level 6;
- gzip_types text/plain application/x-JavaScript text/CSS image/jpg image/jpeg image/PNG image/gif application/xml text/JavaScript application/x-httpd-PHP application/JavaScript application/JSON;
- gzip_disable "MSIE [1-6]\.";
- gzip_vary on;
- server {
- listen 80;
- server_name localhost;
- ...// 省略部分内容...
- :wq
- [[email protected] conf]# systemctl restart nginx.service // 重启服务
在客户机中访问网页, 并使用抓包工具查看是否开启压缩功能
配置 Nginx 实现防盗链
在企业网站服务中,- - 般都要配置防盗链功能, 以避免网站内容被非法盗用, 造成经济损失
Nginx 防盗链功能也非常强大. 默认情况下, 只需要进行简单的配置, 即可实现防盗链处理
配置实例
- [[email protected] ~]# mount.cifs //192.168.100.10/lamp-c7 /mnt/ // 将准备的防盗链图片目录挂载到 Linux 系统
- Password for [email protected]//192.168.100.10/lamp-c7:
- [email protected] mnt]# cd /mnt/ // 进入挂载目录
- [[email protected] mnt]# ls
- apr-1.6.2.tar.gz cronolog-1.6.2-14.el7.x86_64.rpm httpd-2.4.29.tar.bz2 MySQL-5.6.26.tar.gz
- apr-util-1.6.0.tar.gz Discuz_X2.5_SC_UTF8.zip LAMP-php5.6.txt nginx-1.12.0.tar.gz
- awstats-7.6.tar.gz error.PNG miao.jpg PHP-5.6.11.tar.bz2
- [[email protected] mnt]# cp error.PNG /usr/local/nginx/html/ // 将防盗链图片复制到 nginx 站点目录
- [[email protected] mnt]# cd /usr/local/nginx/HTML/ // 进入站点目录
- [[email protected] HTML]# ls // 查看
- 50x.HTML error.PNG index.HTML miao.jpg // 图片成功复制
- [[email protected] HTML]# yum install bind -y // 安装 DNS 功能
已加载插件: fastestmirror, langpacks
- Loading mirror speeds from cached hostfile
- ...// 省略部分内容...
已安装:
bind.x86_64 32:9.11.4-9.P2.el7
作为依赖被安装:
bind-export-libs.x86_64 32:9.11.4-9.P2.el7
作为依赖被升级:
- bind-libs.x86_64 32:9.11.4-9.P2.el7 bind-libs-lite.x86_64 32:9.11.4-9.P2.el7
- bind-license.noarch 32:9.11.4-9.P2.el7 bind-utils.x86_64 32:9.11.4-9.P2.el7
- dhclient.x86_64 12:4.2.5-77.el7.CentOS dhcp-common.x86_64 12:4.2.5-77.el7.CentOS
- dhcp-libs.x86_64 12:4.2.5-77.el7.CentOS
完毕!
- [[email protected] HTML]# VIM /etc/named.conf // 编辑 DNS 主配置文件
- ...// 省略部分内容...
- options {
- listen-on port 53 { any; };
- listen-on-v6 port 53 { ::1; };
- directory "/var/named";
- dump-file "/var/named/data/cache_dump.db";
- statistics-file "/var/named/data/named_stats.txt";
- memstatistics-file "/var/named/data/named_mem_stats.txt";
- recursing-file "/var/named/data/named.recursing";
- secroots-file "/var/named/data/named.secroots";
- allow-query { any; };
- ...// 省略部分内容...
- :wq
- [[email protected] HTML]# VIM /etc/named.rfc1912.zones // 编辑 DNS 区域配置文件
- ...// 省略部分内容...
- zone "kgc.com" IN {
- type master;
- file "kgc.com.zone";
- allow-update { none; };
- };
- ...// 省略部分内容...
- :wq
- [[email protected] named]# cp -p named.localhost kgc.com.zone // 复制 DNS 区域数据文件, 并更改文件名
- [[email protected] named]# VIM kgc.com.zone // 编辑 DNS 区域数据配置文件
- $TTL 1D
- @ IN SOA @ rname.invalid. (
- 0 ; serial
- 1D ; refresh
- 1H ; retry
- 1W ; expire
- 3H ) ; minimum
- NS @
- A 127.0.0.1
- www IN A 192.168.144.133 // 设置解析地址
- :wq
- [[email protected] named]# systemctl start named // 启动 DNS 服务
打开一台 win10 客户机与一台 win 7 客户, 在 win 7 客户机中安装 web 服务, 建立盗链网站, 并在客户机中测试访问网站
- [[email protected] HTML]# cd ../conf/ // 进入 nginx 配置文件目录
- [[email protected] conf]# VIM nginx.conf // 编辑配置文件
- ...// 省略部分内容...
- # redirect server error pages to the static page /50x.HTML
- #
- error_page 500 502 503 504 /50x.HTML;
- location = /50x.HTML {
- root HTML;
- }
- location ~*\.(jpg|gif|swf)$ { // 在 server 模块下添加防盗链条目
- valid_referers none blocked *.kgc.com kgc.com;
- if ( $invalid_referer ) {
- rewrite ^/ http://www.kgc.com/error.png;
- }
- }
- ...// 省略部分内容...
- :wq
- [[email protected] conf]# systemctl restart nginx.service
在 win 10 客户机中测试防盗链功能是否开启
来源: http://www.bubuko.com/infodetail-3297120.html