Nginx服务器|告诉你该怎么做,如果你有梦想,你就要保护它。如果别人做不到某件事,就告诉你,你也做不到。如果你想要什么,就去做吧。——《当幸福来敲门》基本概述Nginx是互联网上主流的高性能http和响应代理web服务器。Nginx不仅可以作为Web服务器使用,还可以提供静态资源服务、缓存、负载均衡等功能。无论你是前端程序员还是后端程序员,你都应该对Nginx不陌生。对于前端和后端来说,就像沟通的桥梁,类似胶水的作用。尤其是在前后端分离的时代,Nginx的出现频率和一线偶像明星差不多。在云原生【CloudNative】时代,Envoy的出现似乎增加了我们技术选型的可能性。当然,Envoy和Nginx都采用了多线程+非阻塞+异步IO(Libevent)的架构模型。实战搭建Nginx基于Centos7部署Nginx安装Nginx相关依赖#安装使nginx支持rewriteyum-yinstallpcre*#安装使nginx支持gcc-c++yum-yinstallgcc-c++#安装使nginx支持zlibyum-yinstallzlib*#安装使nginx支持opensslyum-yinstallopenssl下载安装nginx-1.19.8.tar.gz安装包,上传到服务器目录:/usr/local[root@centos-pivtoal~]#cd/usr/local[root@centos-pivtoallocal]#lsaegisbincloudmonitoretcgamesincludeliblib64libexecnginx-1.19.8.tar.gzsbinsharesrc[root@centos-pivtoallocal]#tar-xvfnginx-1.19.8.tar.gz[root@centos-pivtoallocal]#cdnginx-1.19.8[root@centos-pivtoalnginx-1.19.8]#lsautoCHANGESCHANGES.ruconfconfigurecontribhtmlLICENSEmanREADMEsrc[root@centos-pivtoalnginx-1.19.8]#配置安装检查:./configure[root@centos-pivtoalnginx-1.19.8]#./configure[root@centos-pivtoalnginx-1.19.8]#编译并安装Nginx:make&&makeinstall[root@centos-pivtoalnginx-1.19.8]#make&&makeinstall[root@centos-pivtoalnginx-1.19.8]#配置开机自启动Nginx[1]。在/lib/systemd/system/中目录创建nginx.service:[Unit]Description=nginxAfter=network.target[Service]Type=forkingExecStart=/usr/local/nginx/sbin/nginxExecReload=/usr/local/nginx/sbin/nginx-sreloadExecStop=/usr/local/nginx/sbin/nginx-squitPrivateTmp=true[Install]WantedBy=multi-user.target[注意事项]:描述:描述服务之后:描述服务类别[服务]设置服务运行参数类型:forkingis后台运行形式ExecStart为服务的具体运行命令ExecReload为重启命令ExecStop为停止命令privateTmp:True表示为服务分配独立的临时空间[Service]启动、重启、停止命令都需要使用绝对路径[Install]运行级别服务安装的相关设置可以设置为多用户,即系统运行级别为3[2]。statusnginx.service#重启服务systemctlrestartnginx.service#查看所有启动的服务systemctllist-units--type=service基于Docker部署Nginx拉取Nginx镜像[root@centos-pivtoal~]#dockerpullnginxUsingdefaulttag:latestlatest:从库中拉取/nginxa076a628af6f:拉取完成0732ab25fa22:拉取完成d7f36f6fe38f:拉取完成f72584a26f32:拉取完成7125e4df9063:拉取完成摘要:sha256:10b8cc432d56da8b61b070f4c7d2543a9ed17c2b23010b43af434fd40e2ca4aaStatus:为nginx下载了更新的图像:latestdocker.io/library/nginx:latest[root@centos-pivtoal~]#dockertagdocker.io/librarynginosproot:nginx~]#编写Docker部署脚本dockerrun-itd-p80:80-p443:443--namenginx-server--network-aliasnginx-server--hostnamenginx-server--restartalways-v/docker/nginx/conf/conf.d/:/etc/nginx/conf.d/-v/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf-v/home/application/html:/usr/share/nginx/htmlnginx:latest执行脚本命令dockerrun-itd-p80:80-p443:443--namenginx-server--network-aliasnginx-server--hostnamenginx-server--restartalways-v/docker/nginx/conf/conf.d/:/etc/nginx/conf.d/-v/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf-v/home/application/html:/usr/share/nginx/htmlnginx:latest####Nginx实际配置*设置Nginx进程数[worker_processes]:默认可以设置为CPU核数相等。当并发量比较大时,可以设置为cpu核数*2查看服务器cpu信息:cat/proc/cpu信息|grep处理器[root@iZm5efc4cs8k6t2agr7tceZ管理器]#cat/proc/cpuinfo|grepprocessorprocessor:0processor:1processor:2processor:3[root@iZm5efc4cs8k6t2agr7tceZmanager]#](Example4>Add1CPU]4Core)+4worker_processes(eachworker_processesuses1CPU)>worker_processes4;>worker_cpu_affinity0001001001001000;>[2].8CPU(8Core)+8worker_processes(每个worker_processes使用1个CPU)>worker_processes8;>worker_cpu_affinity00000001000000100000010000001000000100000010000001000000+100000030.6CPU>>[1CPU>>]16worker_processes(每个worker_processes使用1个CPU)>worker_processes16;>worker_cpu_affinity>0000000000000001000000000000001000000000000001000000000000001000000000000001000000000000001000000000000001000000000000001000000000000001000000000000001000000000000001000000000000001000000000000001000000000000001000000000000001000000000000001000000000000000;*配置事件处理模型[events]:配置Nginxworker进程最大打开文件数worker_rlimit_nofile65535;events{使用高性能的epoll事件驱动,处理效率高useepoll;accept_mutexon;开启同时接受多个新的网络连接请求的功能multi_accepton;worker_connections65535;}*开启高效传输模式开启高效文件传输模式sendfileon;需要在sendfile中开启模式有效,防止网络拥塞,主动减少网段数。将响应头和文本的开头一起发送,而不是一个一个地发送。tcp_nopush上;tcp_nodelayon;*开启传输压缩gzipon;gzip_vary开启;gzip_proxied任何;gzip_comp_level6;gzip_typestext/plaintext/csstext/xmlapplication/jsonapplication/javascriptapplication/rss+xmlapplication/atom+xmlimage/svg+xml;
